{"id":17975303,"url":"https://github.com/chris00/ocaml-interval","last_synced_at":"2026-02-23T11:38:40.947Z","repository":{"id":145112238,"uuid":"100024778","full_name":"Chris00/ocaml-interval","owner":"Chris00","description":"An interval library for OCaml","archived":false,"fork":false,"pushed_at":"2022-12-09T07:47:27.000Z","size":433,"stargazers_count":16,"open_issues_count":1,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-06T05:04:13.367Z","etag":null,"topics":["computer-assisted-proof","interval-arithmetic","ocaml","rigorous","scientific-computing","validated"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Chris00.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":null,"funding":null,"license":"LICENSE.md","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":"2017-08-11T11:26:15.000Z","updated_at":"2024-03-12T23:43:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"81abe389-3f42-4a8a-b612-dc3f7019e63c","html_url":"https://github.com/Chris00/ocaml-interval","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/Chris00/ocaml-interval","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chris00%2Focaml-interval","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chris00%2Focaml-interval/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chris00%2Focaml-interval/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chris00%2Focaml-interval/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Chris00","download_url":"https://codeload.github.com/Chris00/ocaml-interval/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Chris00%2Focaml-interval/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29741674,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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":["computer-assisted-proof","interval-arithmetic","ocaml","rigorous","scientific-computing","validated"],"created_at":"2024-10-29T17:19:04.892Z","updated_at":"2026-02-23T11:38:40.922Z","avatar_url":"https://github.com/Chris00.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Continuous Integration](https://github.com/Chris00/ocaml-interval/actions/workflows/main.yml/badge.svg)\n\nInterval\n========\n\nThis is an [interval arithmetic][] library for OCaml.  Here is a small\nexample in the REPL:\n\n```ocaml\n# #require \"interval.top\";;\n...\n# open Interval_crlibm;;\n# let v = I.singleton 1.;;\nval v : Interval_crlibm.I.t = [1, 1]\n# I.sin v;;\n- : Interval_crlibm.I.t = [0.841471, 0.841471]\n# I.Precision.set (Some 16);;\n- : unit = ()\n# I.sin v;;\n- : Interval_crlibm.I.t = [0.8414709848078965, 0.8414709848078966]\n```\n\nSeveral [OPAM][] packages are provided by this repository:\n\n- `interval_base`: basic interval library that defines the datatype\n  `Interval.t` and uses Intel assembly if possible or C99 instructions\n  to perform arithmetic operations\n  (module [Interval](src-base/interval_base.mli)).\n\n- `interval_crlibm`: relies on [crlibm][] to implement the interval\n  operations.  CRlibm provides *proved* correctly-rounded operations,\n  so this is the library of choice for computer assisted proofs.\n\n- `interval_intel`: use Intel FPU instructions with directed rounding\n  to implement interval operations.  However, the Intel FPU operations\n  may not always be correctly rounded for, say, trigonometric\n  functions.\n\n  `interval_intel` uses assembly code to compute all operations with\n  proper rounding, and currently **ONLY** works on Intel processors.\n  The package has been developed for Linux systems but works on\n  MacOSX and Windows when compiled with GCC.\n\n- `interval` is a meta-package installing all the packages above.  It\n  also provides `interval.top` used above.\n\nNote that `ocamlopt` does float constant propagation in *round to the\nnearest* mode which may invalidate interval computations.  Use the\ncompiler flag `-no-float-const-prop` to deactivate it.\n\nHappy interval programming...\n\nInstallation\n------------\n\nThe easier way to install this library is to use [OPAM][]:\n\n    opam install interval\n\n`interval` is a meta-package that will install all packages mentioned above.\n\nIf you cloned this repository, first install [dune][] and\ntype `make` in the main directory.  This will compile the libraries,\nthe examples and run basic tests.  You can compile the examples with The\nprograms of the examples will be in `_build/default/examples/`.\n\nDocumentation\n-------------\n\nTo documentation is build using `dune build @doc` and will be in\n`_build/default/_doc/` in HTML format.  You can also consult the\ninterfaces of\n\n- [Interval](src-base/interval.mli),\n- [Interval_intel](src-intel/interval_intel.mli) and\n  [Fpu](src-intel/fpu.mli),\n- [Interval_crlibm](src-crlibm/interval_crlibm.mli),\n\nor [online](https://chris00.github.io/ocaml-interval/doc/).\nIt is extremely wise to read the whole documentation, even if you\nintend to only use the `Interval_intel` module.\n\nSome examples are available in the `examples/` directory.  There is a\n`B_AND_B` sub-directory with an example of a branch-and-bound\nalgorithm that uses interval arithmetics for function optimization\n(the example is for the Griewank function, but you can substitute any\nfunction you like).\n\nTests\n-----\n\nTests are available in the `tests/` directory.  They are mainly for\ndebugging purpose and quite complicated.  You may run them (`make\ntests`) to check that everything is working properly for your machine.\nThe `test` program runs also a speed test for your particular\narchitecture.\n\nBug reports should be open at\nhttps://github.com/Chris00/ocaml-interval/issues\n\n\n\nRemark: This library was originally published on Jean-Marc Alliot\n[website](http://www.alliot.fr/fbbdet.html.fr) but was moved to Github\nwith the permission of the authors.\n\n\n[interval arithmetic]: https://en.wikipedia.org/wiki/Interval_arithmetic\n[OPAM]: https://opam.ocaml.org/\n[crlibm]: https://github.com/Chris00/ocaml-crlibm\n[dune]: https://github.com/ocaml/dune\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris00%2Focaml-interval","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchris00%2Focaml-interval","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchris00%2Focaml-interval/lists"}