{"id":15060027,"url":"https://github.com/juliano-xd/math","last_synced_at":"2026-02-11T17:04:29.080Z","repository":{"id":256966037,"uuid":"856959765","full_name":"juliano-xd/Math","owner":"juliano-xd","description":"Uma calculadora completa em assembly para calculos de numeros de 256 bits","archived":false,"fork":false,"pushed_at":"2024-11-12T14:27:02.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-10T10:29:36.809Z","etag":null,"topics":["assembly","math"],"latest_commit_sha":null,"homepage":"","language":"Assembly","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/juliano-xd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-13T14:32:58.000Z","updated_at":"2024-12-01T10:50:08.000Z","dependencies_parsed_at":"2024-09-14T05:30:51.021Z","dependency_job_id":"b0991839-7cdc-4606-ad9b-330e200c29d9","html_url":"https://github.com/juliano-xd/Math","commit_stats":null,"previous_names":["juliano-xd/math"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/juliano-xd/Math","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliano-xd%2FMath","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliano-xd%2FMath/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliano-xd%2FMath/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliano-xd%2FMath/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/juliano-xd","download_url":"https://codeload.github.com/juliano-xd/Math/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/juliano-xd%2FMath/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29338681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T16:14:43.024Z","status":"ssl_error","status_checked_at":"2026-02-11T16:14:15.258Z","response_time":97,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","math"],"created_at":"2024-09-24T22:51:22.045Z","updated_at":"2026-02-11T17:04:29.054Z","avatar_url":"https://github.com/juliano-xd.png","language":"Assembly","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Operações de Números de 256 Bits em Assembly\n\nEste repositório foi desenvolvido para otimizar cálculos com números inteiros positivos de 256 bits, utilizando Assembly para garantir alta eficiência em operações aritméticas. É projetado para ser usado com código em C.\n\nDesenvolvido para: x86_64\n\n## Operações suportadas\n\nAtualmente, o repositório oferece suporte para as seguintes operações:\n* **Soma**      `bigSum`: `A += B`\n* **Soma um**      `bigSumOne`: `A++`\n* **Subtração**      `bigSub`: `A -= B`\n* **Subtrai um**      `bigSubOne`:`A--`\n* **Multiplicação**      `bigMul`: `A *= B`\n* **Comparação de igualdade**      `bigEql`:`A == B`\n* **Comparação de diferença**      `bigDif`:`A != B`\n* **Comparação maior-que**      `bigGreater`:`A \u003e B`\n* **Comparação menor-que**      `bigLess`:`A \u003c B`\n\n## Metas para a proxima atualização\n* **Divisão**      `bigDiv`:`A /= B`\n* **Modulo**      será o valor de retorno de `bigDiv`\n* **ShiftLeft**      `bigShl`:`A = A \u003c\u003c x` sendo `x` um valor de 0 a 256\n* **ShiftRight**      `bigShr`:`A = A \u003e\u003e x` sendo `x` um valor de 0 a 256\n* **Elevado ao quadrado**      `bigSqr`:`A = A²`\n* **Elevado ao cubo**      `bigCbe`:`A = A³`\n\nEssas funções manipulam dois números de 256 bits, representados como dois arrays de `unsigned long long int` com 4 elementos cada (`number[4]`). O overflow é tratado corretamente, e cada array é considerado como um único número de 256 bits.\n\n**Exemplo de uso**\n```c\n#include \u003cmath.h\u003e\n\nint main() {\n    _uint256t numberA = {0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67897};\n    _uint256t numberB = {0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67890, 0xA1B2C3D4E5F67897};\n\n    // Realiza a soma: numberA += numberB\n    bigSum(numberA, numberB);\n\n    // Realiza a soma: numberA++\n    bigSumOne(numberA);\n\n    // Realiza a subtração: numberA -= numberB\n    bigSub(numberA, numberB);\n\n    // Realiza a subtração: numberA--\n    bigSubOne(numberA);    \n\n    // Realiza a multiplicação: numberA *= numberB\n    bigMul(numberA, numberB);\n\n    _Bool test;\n\n    // Realiza a comparação: numberA == numberB\n    test = bigEql(numberA, numberB);\n\n    // Realiza a comparação: numberA != numberB\n    test = bigDif(numberA, numberB);\n\n    // Realiza a comparação: numberA \u003e numberB\n    test = bigGreater(numberA, numberB);\n\n    // Realiza a comparação: numberA \u003c numberB\n    test = bigLess(numberA, numberB);\n\n    return 0;\n}\n\n```\n\n\n## Diferenciais\n\n**Desempenho**\n\nAs funções são implementadas em Assembly para maximizar a eficiência, operando diretamente com instruções de máquina e minimizando o uso de recursos. Ao contrário de implementações como `BigInteger`, que dividem números em bytes e processam cada byte individualmente, este repositório realiza cálculos com números no formato nativo da CPU x86_64. As operações são feitas com tamanhos fixos e sem verificações desnecessárias, focando exclusivamente no tratamento de overflow e na propagação de carry.\n\n## Download e Compilação\n\n```shell\ngit clone https://github.com/juliano-xd/Math.git\ncd Math\nsudo make install # realiza todo o processo de instalação\n```\nApos instalado, para poder linkar o math ao seu projeto, basta incluir `-lmath` a linha de compilação do gcc, por exemplo:\n\n```shell\ngcc -o main main.c -lmath\n```\n\n**Para rodar**\n```shell\n./main\n```\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliano-xd%2Fmath","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuliano-xd%2Fmath","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuliano-xd%2Fmath/lists"}