{"id":13642661,"url":"https://github.com/verificarlo/verificarlo","last_synced_at":"2026-02-20T10:03:56.174Z","repository":{"id":30704176,"uuid":"34260221","full_name":"verificarlo/verificarlo","owner":"verificarlo","description":"A tool for debugging and assessing floating point precision and reproducibility.","archived":false,"fork":false,"pushed_at":"2026-01-26T19:56:26.000Z","size":14584,"stargazers_count":93,"open_issues_count":10,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-02-14T21:53:43.444Z","etag":null,"topics":["floating-point","llvm","mixed-precision","montecarlo-arithmetic","mpfr","numerical-analysis","precision","tool"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/verificarlo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"COPYING","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2015-04-20T12:52:38.000Z","updated_at":"2026-02-06T09:49:59.000Z","dependencies_parsed_at":"2024-01-14T09:11:59.291Z","dependency_job_id":"b980f1da-6359-49e1-a753-b1d56c0b2fcb","html_url":"https://github.com/verificarlo/verificarlo","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/verificarlo/verificarlo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verificarlo%2Fverificarlo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verificarlo%2Fverificarlo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verificarlo%2Fverificarlo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verificarlo%2Fverificarlo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/verificarlo","download_url":"https://codeload.github.com/verificarlo/verificarlo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/verificarlo%2Fverificarlo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29647768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"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":["floating-point","llvm","mixed-precision","montecarlo-arithmetic","mpfr","numerical-analysis","precision","tool"],"created_at":"2024-08-02T01:01:34.610Z","updated_at":"2026-02-20T10:03:56.169Z","avatar_url":"https://github.com/verificarlo.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"## Verificarlo v2.4.0\n\nA tool for debugging and assessing floating point precision and reproducibility.\n\n![verificarlo logo](https://avatars1.githubusercontent.com/u/12033642)\n\n![GitHub Release](https://img.shields.io/github/v/release/verificarlo/verificarlo)\n![Build Status](https://github.com/verificarlo/verificarlo/actions/workflows/docker-ci.yml/badge.svg?branch=master)\n[![Docker Pulls](https://img.shields.io/docker/pulls/verificarlo/verificarlo)](https://hub.docker.com/r/verificarlo/verificarlo)\n[![DOI](https://zenodo.org/badge/34260221.svg)](https://zenodo.org/badge/latestdoi/34260221)\n[![Coverity](https://scan.coverity.com/projects/19956/badge.svg)](https://scan.coverity.com/projects/verificarlo-verificarlo)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://releases.llvm.org/13.0.0/LICENSE.TXT)\n\n\n- [Verificarlo v2.4.0](#verificarlo-v240)\n- [Installation](#installation)\n- [Using Verificarlo through its Docker image](#using-verificarlo-through-its-docker-image)\n- [Usage](#usage)\n- [Branch instrumentation](#branch-instrumentation)\n- [FMA instrumentation](#fma-instrumentation)\n- [Cast instrumentation](#cast-instrumentation)\n- [Examples and Tutorial](#examples-and-tutorial)\n- [Backends](#backends)\n- [Inclusion/exclusion options](#inclusionexclusion-options)\n- [Pinpointing numerical errors with Delta-Debug](#pinpointing-numerical-errors-with-delta-debug)\n- [VPREC Function Instrumentation](#vprec-function-instrumentation)\n- [Postprocessing](#postprocessing)\n- [Interflop user call instrumentation](#interflop-user-call-instrumentation)\n- [How to cite Verificarlo](#how-to-cite-verificarlo)\n- [Discussion Group](#discussion-group)\n- [License](#license)\n\n\n## Installation\n\nTo install Verificarlo please refer to the [installation documentation](doc/01-Install.md). Verificarlo supports both amd64 and aarch64 architectures.\n\n## Using Verificarlo through its Docker image\n\nA docker image is available at https://hub.docker.com/r/verificarlo/verificarlo/.\nThis image uses the latest release version of Verificarlo and includes\nsupport for Fortran. It uses llvm-7 and gcc-7.\n\nExample of usage with Monte Carlo arithmetic:\n\n```bash\n$ cat \u003e test.c \u003c\u003cHERE\n#include \u003cstdio.h\u003e\nint main() {\n  double a = 0;\n  for (int i=0; i \u003c 10000; i++) a += 0.1;\n  printf(\"%0.17f\\n\", a);\n  return 0;\n}\nHERE\n\n$ docker pull verificarlo/verificarlo\n$ docker run -v \"$PWD\":/workdir verificarlo/verificarlo \\\n   verificarlo-c test.c -o test\n$ docker run -v \"$PWD\":/workdir -e VFC_BACKENDS=\"libinterflop_mca.so\" \\\n   verificarlo/verificarlo ./test\n999.99999999999795364\n$ docker run -v \"$PWD\":/workdir -e VFC_BACKENDS=\"libinterflop_mca.so\" \\\n   verificarlo/verificarlo ./test\n999.99999999999761258\n```\n\n## Usage\n\nTo automatically instrument a program with Verificarlo you must compile it using\nthe `verificarlo --linker=\u003clinker\u003e` command, where `\u003clinker\u003e` depends on the targeted language:\n\n\n* `verificarlo --linker=clang`   for C\n* `verificarlo --linker=clang++` for C++\n* `verificarlo --linker=flang`   for Fortran\n\nVerificarlo uses the linker `clang` by default.\n\nYou can also use the provided wrappers to call `verificarlo` with the right linker:\n\n* `verificarlo-c` for C\n* `verificarlo-c++` for C++\n* `verificarlo-f` for Fortran\n\nFirst, make sure that the verificarlo installation\ndirectory is in your PATH.\n\nThen you can use the `verificarlo-c`, `verificarlo-f` and `verificarlo-c++` commands to compile your programs.\nEither modify your makefile to use `verificarlo` as the compiler (`CC=verificarlo-c`,\n`FC=verificarlo-f`, and `CXX=verificarlo-c++`) and linker (`LD=verificarlo --linker=\u003clinker\u003e`) or use the verificarlo command\ndirectly:\n\n```bash\n   $ verificarlo-c program.c -o ./program\n```\n\nIf you are trying to compile a shared library, such as those built by the Cython\nextension to Python, you can then also set the shared linker environment variable\n(`LDSHARED='verificarlo --linker=\u003clinker\u003e -shared'`) to enable position-independent linking.\n\nWhen invoked with the `--verbose` flag, verificarlo provides a detailed output of\nthe instrumentation process.\n\nIt is important to include the necessary link flags if you use extra libraries.\nFor example, you should include `-lm` if you are linking against the math\nlibrary.\n\n## Branch instrumentation\n\nVerificarlo can instrument floating point comparison operations. By default,\ncomparison operations are not instrumented and default backends do not make use of\nthis feature. If your backend requires instrumenting floating-point comparisons, you\nmust call `verificarlo` with the `--inst-fcmp` flag.\n\n## FMA instrumentation\n\nVerificarlo can instrument Fused Multiply-Add (FMA) operations. By default, FMA operations are not instrumented and default backends do not make use of this feature. If your backend requires instrumenting FMA operations, you must call `verificarlo` with the `--inst-fma` flag.\n\n## Cast instrumentation\n\nVerificarlo can also instrument cast operations. By default, cast operations are not instrumented and default backends do not make use of this feature. If your backend requires instrumenting cast operations, you must call `verificarlo` with the `--inst-cast` flag.\n\n## Examples and Tutorial\n\nThe `tests/` directory contains various examples of Verificarlo usage.\n\nA [tutorial](https://github.com/verificarlo/verificarlo/wiki/Tutorials) is available.\n\n## Backends\n\nVerificarlo includes different numerical backends. Please refer to the [backends' documentation](doc/02-Backends.md).\n\n  * [IEEE Backend (libinterflop_ieee.so)](doc/02-Backends.md#ieee-backend-libinterflop_ieeeso)\n  * [MCA Backends (libinterflop_mca.so and lib_interflop_mca_int.so)](doc/02-Backends.md#mca-backends)\n  * [Bitmask Backend (libinterflop_bitmask.so)](doc/02-Backends.md#bitmask-backend-libinterflop_bitmaskso)\n  * [Cancellation Backend (libinterflop_cancellation.so)](doc/02-Backends.md#cancellation-backend-libinterflop_cancellationso)\n  * [VPREC Backend (libinterflop_vprec.so)](doc/02-Backends.md#vprec-backend-libinterflop_vprecso)\n  * [PRISM Backend](doc/02-Backends.md#prism-backend)\n\n## Inclusion/exclusion options\nTo include only certain parts of the code in the analysis or exclude parts of\nthe code from instrumentation please refer to [inclusion/exclusion options documentation](doc/03-inclusion-exclusion.md).\n\n\n## Pinpointing numerical errors with Delta-Debug\n\nTo pinpoint numerical errors please refer to the [Delta-Debug documentation](doc/04-DeltaDebug.md).\n\n## VPREC Function Instrumentation\n\nA function instrumentation pass enables VPREC exploration and optimization at\nthe function granularity level. Please refer to the [VPREC Function Instrumentation documentation](doc/05-VPREC-function-instrumentation.md).\n\n## Postprocessing\n\nVerificarlo includes a set of [postprocessing tools](doc/06-Postprocessing.md) to help analyze Verificarlo results and produce high-level reports.\n\n  * [Find Optimal precision with vfc_precexp and vfc_report](doc/06-Postprocessing.md#find-optimal-precision-with-vfc_precexp-and-vfc_report)\n  * [Unstable branch detection](doc/06-Postprocessing.md#unstable-branch-detection)\n  * [VFC-VTK](doc/06-Postprocessing.md#vfc-vtk)\n  * [Verificarlo CI](doc/06-Postprocessing.md#verificarlo-ci)\n\n## Interflop user call instrumentation\n\nVerificarlo provides the ability to call low-level backend functions directly through \nthe `interflop_call` function. Please refer to the [Interflop user call instrumentation documentation](doc/07-Interflop-usercall-instrumentation.md).\n\n## How to cite Verificarlo\n\nIf you use Verificarlo in your research, please cite one of the following papers:\n\n- Verificarlo: http://dx.doi.org/10.1109/ARITH.2016.31, preprint available [here](https://hal.archives-ouvertes.fr/hal-01192668/file/verificarlo-preprint.pdf).\n- VPREC Backend: https://hal.archives-ouvertes.fr/hal-02564972\n- VPREC Function Instrumentation and exploration: http://dx.doi.org/10.1109/TETC.2021.3070422\n\nThanks! :sparkles:\n\n## Discussion Group\n\nFor questions, feedback, or discussions about Verificarlo, you can use the [Discussions section](https://github.com/verificarlo/verificarlo/discussions) on our GitHub project page.\n\n## License\nThis file is part of the Verificarlo project,                        \nunder the Apache License v2.0 with LLVM Exceptions.                 \nSPDX-License-Identifier: Apache-2.0 WITH LLVM-exception.             \nSee https://llvm.org/LICENSE.txt for license information.            \n\nCopyright (c) 2019-2026\n   Verificarlo Contributors\n\nCopyright (c) 2018\n   Universite de Versailles St-Quentin-en-Yvelines\n\nCopyright (c) 2015\n   Universite de Versailles St-Quentin-en-Yvelines\n   CMLA, Ecole Normale Superieure de Cachan\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverificarlo%2Fverificarlo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fverificarlo%2Fverificarlo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fverificarlo%2Fverificarlo/lists"}