1252884aeSStefan Eßer# `bc` 2252884aeSStefan Eßer 3252884aeSStefan Eßer***WARNING: This project has moved to [https://git.yzena.com/][20] for [these 4252884aeSStefan Eßerreasons][21], though GitHub will remain a mirror.*** 5252884aeSStefan Eßer 6252884aeSStefan EßerThis is an implementation of the [POSIX `bc` calculator][12] that implements 7252884aeSStefan Eßer[GNU `bc`][1] extensions, as well as the period (`.`) extension for the BSD 8252884aeSStefan Eßerflavor of `bc`. 9252884aeSStefan Eßer 103aa99676SStefan EßerFor more information, see this `bc`'s full manual. 11252884aeSStefan Eßer 12252884aeSStefan EßerThis `bc` also includes an implementation of `dc` in the same binary, accessible 13252884aeSStefan Eßervia a symbolic link, which implements all FreeBSD and GNU extensions. (If a 14252884aeSStefan Eßerstandalone `dc` binary is desired, `bc` can be copied and renamed to `dc`.) The 15252884aeSStefan Eßer`!` command is omitted; I believe this poses security concerns and that such 16252884aeSStefan Eßerfunctionality is unnecessary. 17252884aeSStefan Eßer 183aa99676SStefan EßerFor more information, see the `dc`'s full manual. 19252884aeSStefan Eßer 208ea90135SStefan EßerThis `bc` also provides `bc`'s math as a library with C bindings, called `bcl`. 218ea90135SStefan Eßer 228ea90135SStefan EßerFor more information, see the full manual for `bcl`. 238ea90135SStefan Eßer 2444d4804dSStefan Eßer## License 2544d4804dSStefan Eßer 26252884aeSStefan EßerThis `bc` is Free and Open Source Software (FOSS). It is offered under the BSD 27252884aeSStefan Eßer2-clause License. Full license text may be found in the [`LICENSE.md`][4] file. 28252884aeSStefan Eßer 29252884aeSStefan Eßer## Prerequisites 30252884aeSStefan Eßer 317e5c51e5SStefan EßerThis `bc` only requires either: 327e5c51e5SStefan Eßer 337e5c51e5SStefan Eßer1. Windows 10 or later, or 347e5c51e5SStefan Eßer2. A C99-compatible compiler and a (mostly) POSIX 2008-compatible system with 357e5c51e5SStefan Eßer the XSI (X/Open System Interfaces) option group. 36252884aeSStefan Eßer 37252884aeSStefan EßerSince POSIX 2008 with XSI requires the existence of a C99 compiler as `c99`, any 38252884aeSStefan EßerPOSIX and XSI-compatible system will have everything needed. 39252884aeSStefan Eßer 407e5c51e5SStefan EßerPOSIX-compatible systems that are known to work: 41252884aeSStefan Eßer 42252884aeSStefan Eßer* Linux 43252884aeSStefan Eßer* FreeBSD 44252884aeSStefan Eßer* OpenBSD 45252884aeSStefan Eßer* NetBSD 46252884aeSStefan Eßer* Mac OSX 473aa99676SStefan Eßer* Solaris* (as long as the Solaris version supports POSIX 2008) 48252884aeSStefan Eßer* AIX 4910328f8bSStefan Eßer* HP-UX* (except for history) 50252884aeSStefan Eßer 517e5c51e5SStefan EßerIn addition, there is compatibility code to make this `bc` work on Windows. 527e5c51e5SStefan Eßer 53252884aeSStefan EßerPlease submit bug reports if this `bc` does not build out of the box on any 547e5c51e5SStefan Eßersystem. 55252884aeSStefan Eßer 56252884aeSStefan Eßer## Build 57252884aeSStefan Eßer 5844d4804dSStefan EßerThis `bc` should build unmodified on any POSIX-compliant system or on Windows 5944d4804dSStefan Eßerstarting with Windows 10 (though earlier versions may work). 6044d4804dSStefan Eßer 61*10041e99SStefan EßerFor more complex build requirements than the ones below, see the [build 62*10041e99SStefan Eßermanual][5]. 6344d4804dSStefan Eßer 647e5c51e5SStefan Eßer### Windows 657e5c51e5SStefan Eßer 667e5c51e5SStefan EßerThere is no guarantee that this `bc` will work on any version of Windows earlier 677e5c51e5SStefan Eßerthan Windows 10 (I cannot test on earlier versions), but it is guaranteed to 687e5c51e5SStefan Eßerwork on Windows 10 at least. 697e5c51e5SStefan Eßer 707e5c51e5SStefan EßerAlso, if building with MSBuild, the MSBuild bundled with Visual Studio is 717e5c51e5SStefan Eßerrequired. 727e5c51e5SStefan Eßer 737e5c51e5SStefan Eßer**Note**: Unlike the POSIX-compatible platforms, only one build configuration is 747e5c51e5SStefan Eßersupported on Windows: extra math and prompt enabled, history and NLS (locale 757e5c51e5SStefan Eßersupport) disabled, with both calculators built. 767e5c51e5SStefan Eßer 777e5c51e5SStefan Eßer#### `bc` 787e5c51e5SStefan Eßer 79*10041e99SStefan EßerTo build `bc`, you can open the `vs/bc.sln` file in Visual Studio, select the 807e5c51e5SStefan Eßerconfiguration, and build. 817e5c51e5SStefan Eßer 827e5c51e5SStefan EßerYou can also build using MSBuild with the following from the root directory: 837e5c51e5SStefan Eßer 847e5c51e5SStefan Eßer``` 85*10041e99SStefan Eßermsbuild -property:Configuration=<config> vs/bc.sln 867e5c51e5SStefan Eßer``` 877e5c51e5SStefan Eßer 887e5c51e5SStefan Eßerwhere `<config>` is either one of `Debug` or `Release`. 897e5c51e5SStefan Eßer 90*10041e99SStefan EßerOn Windows, the calculators are built as `vs/bin/<platform>/<config>/bc.exe` and 91*10041e99SStefan Eßer`vs/bin/<Platform>/<Config>/dc.exe`, where `<platform>` can be either `Win32` or 92*10041e99SStefan Eßer`x64`, and `<config>` can be `Debug` or `Release`. 93*10041e99SStefan Eßer 94*10041e99SStefan Eßer**Note**: On Windows, `dc.exe` is just copied from `bc.exe`; it is not linked. 95*10041e99SStefan EßerPatches are welcome for a way to do that. 96*10041e99SStefan Eßer 977e5c51e5SStefan Eßer#### `bcl` (Library) 987e5c51e5SStefan Eßer 99*10041e99SStefan EßerTo build the library, you can open the `vs/bcl.sln` file in Visual Studio, 100*10041e99SStefan Eßerselect the configuration, and build. 1017e5c51e5SStefan Eßer 1027e5c51e5SStefan EßerYou can also build using MSBuild with the following from the root directory: 1037e5c51e5SStefan Eßer 1047e5c51e5SStefan Eßer``` 105*10041e99SStefan Eßermsbuild -property:Configuration=<config> vs/bcl.sln 1067e5c51e5SStefan Eßer``` 1077e5c51e5SStefan Eßer 108*10041e99SStefan Eßerwhere `<config>` is either one of `Debug`, `ReleaseMD`, or `ReleaseMT`. 109*10041e99SStefan Eßer 110*10041e99SStefan EßerOn Windows, the library is built as `vs/lib/<platform>/<config>/bcl.lib`, where 111*10041e99SStefan Eßer`<platform>` can be either `Win32` or `x64`, and `<config>` can be `Debug`, 112*10041e99SStefan Eßer`ReleaseMD`, or `ReleaseMT`. 1137e5c51e5SStefan Eßer 1147e5c51e5SStefan Eßer### POSIX-Compatible Systems 1157e5c51e5SStefan Eßer 1167e5c51e5SStefan EßerOn POSIX-compatible systems, `bc` is built as `bin/bc` and `dc` is built as 117*10041e99SStefan Eßer`bin/dc` by default. 1187e5c51e5SStefan Eßer 1197e5c51e5SStefan Eßer#### Default 120252884aeSStefan Eßer 121252884aeSStefan EßerFor the default build with optimization, use the following commands in the root 122252884aeSStefan Eßerdirectory: 123252884aeSStefan Eßer 124252884aeSStefan Eßer``` 125252884aeSStefan Eßer./configure.sh -O3 126252884aeSStefan Eßermake 127252884aeSStefan Eßer``` 128252884aeSStefan Eßer 1297e5c51e5SStefan Eßer#### One Calculator 130252884aeSStefan Eßer 131252884aeSStefan EßerTo only build `bc`, use the following commands: 132252884aeSStefan Eßer 133252884aeSStefan Eßer``` 134252884aeSStefan Eßer./configure.sh --disable-dc 135252884aeSStefan Eßermake 136252884aeSStefan Eßer``` 137252884aeSStefan Eßer 138252884aeSStefan EßerTo only build `dc`, use the following commands: 139252884aeSStefan Eßer 140252884aeSStefan Eßer``` 141252884aeSStefan Eßer./configure.sh --disable-bc 142252884aeSStefan Eßermake 143252884aeSStefan Eßer``` 144252884aeSStefan Eßer 1457e5c51e5SStefan Eßer#### Debug 146252884aeSStefan Eßer 147252884aeSStefan EßerFor debug builds, use the following commands in the root directory: 148252884aeSStefan Eßer 149252884aeSStefan Eßer``` 150252884aeSStefan Eßer./configure.sh -g 151252884aeSStefan Eßermake 152252884aeSStefan Eßer``` 153252884aeSStefan Eßer 1547e5c51e5SStefan Eßer#### Install 155252884aeSStefan Eßer 156252884aeSStefan EßerTo install, use the following command: 157252884aeSStefan Eßer 158252884aeSStefan Eßer``` 159252884aeSStefan Eßermake install 160252884aeSStefan Eßer``` 161252884aeSStefan Eßer 162252884aeSStefan EßerBy default, `bc` and `dc` will be installed in `/usr/local`. For installing in 163252884aeSStefan Eßerother locations, use the `PREFIX` environment variable when running 164252884aeSStefan Eßer`configure.sh` or pass the `--prefix=<prefix>` option to `configure.sh`. See the 165252884aeSStefan Eßer[build manual][5], or run `./configure.sh --help`, for more details. 166252884aeSStefan Eßer 1677e5c51e5SStefan Eßer#### Library 16850696a6eSStefan Eßer 16950696a6eSStefan EßerThis `bc` does provide a way to build a math library with C bindings. This is 17050696a6eSStefan Eßerdone by the `-a` or `--library` options to `configure.sh`: 17150696a6eSStefan Eßer 17250696a6eSStefan Eßer``` 17350696a6eSStefan Eßer./configure.sh -a 17450696a6eSStefan Eßer``` 17550696a6eSStefan Eßer 17650696a6eSStefan EßerWhen building the library, the executables are not built. For more information, 17750696a6eSStefan Eßersee the [build manual][5]. 17850696a6eSStefan Eßer 17950696a6eSStefan EßerThe library API can be found in [`manuals/bcl.3.md`][26] or `man bcl` once the 18050696a6eSStefan Eßerlibrary is installed. 18150696a6eSStefan Eßer 1827e5c51e5SStefan EßerThe library is built as `bin/libbcl.a` on POSIX-compatible systems or as 1837e5c51e5SStefan Eßer`Release/bcl/bcl.lib` on Windows. 18450696a6eSStefan Eßer 1857e5c51e5SStefan Eßer#### Package and Distro Maintainers 186252884aeSStefan Eßer 187*10041e99SStefan EßerThis section is for package and distro maintainers. 188*10041e99SStefan Eßer 189*10041e99SStefan Eßer##### Out-of-Source Builds 190*10041e99SStefan Eßer 191*10041e99SStefan EßerOut-of-source builds are supported; just call `configure.sh` from the directory 192*10041e99SStefan Eßerwhere the actual build will happen. 193*10041e99SStefan Eßer 194*10041e99SStefan EßerFor example, if the source is in `bc`, the build should happen in `build`, then 195*10041e99SStefan Eßercall `configure.sh` and `make` like so: 196*10041e99SStefan Eßer 197*10041e99SStefan Eßer``` 198*10041e99SStefan Eßer../bc/configure.sh 199*10041e99SStefan Eßermake 200*10041e99SStefan Eßer``` 201*10041e99SStefan Eßer 202*10041e99SStefan Eßer***WARNING***: The path to `configure.sh` from the build directory must not have 203*10041e99SStefan Eßerspaces because `make` does not support target names with spaces. 204*10041e99SStefan Eßer 2057e5c51e5SStefan Eßer##### Recommended Compiler 206252884aeSStefan Eßer 207252884aeSStefan EßerWhen I ran benchmarks with my `bc` compiled under `clang`, it performed much 208252884aeSStefan Eßerbetter than when compiled under `gcc`. I recommend compiling this `bc` with 209252884aeSStefan Eßer`clang`. 210252884aeSStefan Eßer 211252884aeSStefan EßerI also recommend building this `bc` with C11 if you can because `bc` will detect 212252884aeSStefan Eßera C11 compiler and add `_Noreturn` to any relevant function(s). 213252884aeSStefan Eßer 2147e5c51e5SStefan Eßer##### Recommended Optimizations 215252884aeSStefan Eßer 216252884aeSStefan EßerI wrote this `bc` with Separation of Concerns, which means that there are many 217252884aeSStefan Eßersmall functions that could be inlined. However, they are often called across 218252884aeSStefan Eßerfile boundaries, and the default optimizer can only look at the current file, 219252884aeSStefan Eßerwhich means that they are not inlined. 220252884aeSStefan Eßer 221252884aeSStefan EßerThus, because of the way this `bc` is built, it will automatically be slower 222252884aeSStefan Eßerthan other `bc` implementations when running scripts with no math. (My `bc`'s 223252884aeSStefan Eßermath is *much* faster, so any non-trivial script should run faster in my `bc`.) 224252884aeSStefan Eßer 225252884aeSStefan EßerSome, or all, of the difference can be made up with the right optimizations. The 226252884aeSStefan Eßeroptimizations I recommend are: 227252884aeSStefan Eßer 228252884aeSStefan Eßer1. `-O3` 229252884aeSStefan Eßer2. `-flto` (link-time optimization) 230252884aeSStefan Eßer 231252884aeSStefan Eßerin that order. 232252884aeSStefan Eßer 233252884aeSStefan EßerLink-time optimization, in particular, speeds up the `bc` a lot. This is because 234252884aeSStefan Eßerwhen link-time optimization is turned on, the optimizer can look across files 235252884aeSStefan Eßerand inline *much* more heavily. 236252884aeSStefan Eßer 237252884aeSStefan EßerHowever, I recommend ***NOT*** using `-march=native`. Doing so will reduce this 238252884aeSStefan Eßer`bc`'s performance, at least when building with link-time optimization. See the 239252884aeSStefan Eßer[benchmarks][19] for more details. 240252884aeSStefan Eßer 2417e5c51e5SStefan Eßer##### Stripping Binaries 242252884aeSStefan Eßer 243252884aeSStefan EßerBy default, non-debug binaries are stripped, but stripping can be disabled with 244252884aeSStefan Eßerthe `-T` option to `configure.sh`. 245252884aeSStefan Eßer 2467e5c51e5SStefan Eßer##### Using This `bc` as an Alternative 247252884aeSStefan Eßer 248252884aeSStefan EßerIf this `bc` is packaged as an alternative to an already existing `bc` package, 249252884aeSStefan Eßerit is possible to rename it in the build to prevent name collision. To prepend 250252884aeSStefan Eßerto the name, just run the following: 251252884aeSStefan Eßer 252252884aeSStefan Eßer``` 253252884aeSStefan EßerEXECPREFIX=<some_prefix> ./configure.sh 254252884aeSStefan Eßer``` 255252884aeSStefan Eßer 256252884aeSStefan EßerTo append to the name, just run the following: 257252884aeSStefan Eßer 258252884aeSStefan Eßer``` 259252884aeSStefan EßerEXECSUFFIX=<some_suffix> ./configure.sh 260252884aeSStefan Eßer``` 261252884aeSStefan Eßer 262252884aeSStefan EßerIf a package maintainer wishes to add both a prefix and a suffix, that is 263252884aeSStefan Eßerallowed. 264252884aeSStefan Eßer 265252884aeSStefan Eßer**Note**: The suggested name (and package name) when `bc` is not available is 266252884aeSStefan Eßer`bc-gh`. 267252884aeSStefan Eßer 2687e5c51e5SStefan Eßer##### Karatsuba Number 269252884aeSStefan Eßer 270252884aeSStefan EßerPackage and distro maintainers have one tool at their disposal to build this 27144d4804dSStefan Eßer`bc` in the optimal configuration: `scripts/karatsuba.py`. 272252884aeSStefan Eßer 273252884aeSStefan EßerThis script is not a compile-time or runtime prerequisite; it is for package and 274252884aeSStefan Eßerdistro maintainers to run once when a package is being created. It finds the 275252884aeSStefan Eßeroptimal Karatsuba number (see the [algorithms manual][7] for more information) 276252884aeSStefan Eßerfor the machine that it is running on. 277252884aeSStefan Eßer 278252884aeSStefan EßerThe easiest way to run this script is with `make karatsuba`. 279252884aeSStefan Eßer 280252884aeSStefan EßerIf desired, maintainers can also skip running this script because there is a 281252884aeSStefan Eßersane default for the Karatsuba number. 282252884aeSStefan Eßer 283252884aeSStefan Eßer## Status 284252884aeSStefan Eßer 285252884aeSStefan EßerThis `bc` is robust. 286252884aeSStefan Eßer 287252884aeSStefan EßerIt is well-tested, fuzzed, and fully standards-compliant (though not certified) 288252884aeSStefan Eßerwith POSIX `bc`. The math has been tested with 40+ million random problems, so 289252884aeSStefan Eßerit is as correct as I can make it. 290252884aeSStefan Eßer 291252884aeSStefan EßerThis `bc` can be used as a drop-in replacement for any existing `bc`. This `bc` 292252884aeSStefan Eßeris also compatible with MinGW toolchains, though history is not supported on 293252884aeSStefan EßerWindows. 294252884aeSStefan Eßer 295252884aeSStefan EßerIn addition, this `bc` is considered complete; i.e., there will be no more 296252884aeSStefan Eßerreleases with additional features. However, it *is* actively maintained, so if 297252884aeSStefan Eßerany bugs are found, they will be fixed in new releases. Also, additional 298252884aeSStefan Eßertranslations will also be added as they are provided. 299252884aeSStefan Eßer 30044d4804dSStefan Eßer### Development 30144d4804dSStefan Eßer 30244d4804dSStefan EßerIf I (Gavin D. Howard) get [hit by a bus][27] and future programmers need to 30344d4804dSStefan Eßerhandle work themselves, the best place to start is the [Development manual][28]. 30444d4804dSStefan Eßer 30544d4804dSStefan Eßer## Vim Syntax 30644d4804dSStefan Eßer 30744d4804dSStefan EßerI have developed (using other people's code to start) [`vim` syntax files][17] 30844d4804dSStefan Eßerfor this `bc` and `dc`, including the extensions. 30944d4804dSStefan Eßer 31044d4804dSStefan Eßer## `bc` Libs 31144d4804dSStefan Eßer 31244d4804dSStefan EßerI have gathered some excellent [`bc` and `dc` libraries][18]. These libraries 31344d4804dSStefan Eßermay prove useful to any serious users. 31444d4804dSStefan Eßer 315252884aeSStefan Eßer## Comparison to GNU `bc` 316252884aeSStefan Eßer 317252884aeSStefan EßerThis `bc` compares favorably to GNU `bc`. 318252884aeSStefan Eßer 3197e5c51e5SStefan Eßer* This `bc` builds natively on Windows. 320252884aeSStefan Eßer* It has more extensions, which make this `bc` more useful for scripting. 321252884aeSStefan Eßer* This `bc` is a bit more POSIX compliant. 322252884aeSStefan Eßer* It has a much less buggy parser. The GNU `bc` will give parse errors for what 323252884aeSStefan Eßer is actually valid `bc` code, or should be. For example, putting an `else` on 324252884aeSStefan Eßer a new line after a brace can cause GNU `bc` to give a parse error. 325252884aeSStefan Eßer* This `bc` has fewer crashes. 326252884aeSStefan Eßer* GNU `bc` calculates the wrong number of significant digits for `length(x)`. 327252884aeSStefan Eßer* GNU `bc` will sometimes print numbers incorrectly. For example, when running 328252884aeSStefan Eßer it on the file `tests/bc/power.txt` in this repo, GNU `bc` gets all the right 329252884aeSStefan Eßer answers, but it fails to wrap the numbers at the proper place when outputting 330252884aeSStefan Eßer to a file. 331252884aeSStefan Eßer* This `bc` is faster. (See [Performance](#performance).) 332252884aeSStefan Eßer 333252884aeSStefan Eßer### Performance 334252884aeSStefan Eßer 335252884aeSStefan EßerBecause this `bc` packs more than `1` decimal digit per hardware integer, this 336252884aeSStefan Eßer`bc` is faster than GNU `bc` and can be *much* faster. Full benchmarks can be 337252884aeSStefan Eßerfound at [manuals/benchmarks.md][19]. 338252884aeSStefan Eßer 339252884aeSStefan EßerThere is one instance where this `bc` is slower: if scripts are light on math. 340252884aeSStefan EßerThis is because this `bc`'s intepreter is slightly slower than GNU `bc`, but 341252884aeSStefan Eßerthat is because it is more robust. See the [benchmarks][19]. 342252884aeSStefan Eßer 343252884aeSStefan Eßer## Algorithms 344252884aeSStefan Eßer 345252884aeSStefan EßerTo see what algorithms this `bc` uses, see the [algorithms manual][7]. 346252884aeSStefan Eßer 347252884aeSStefan Eßer## Locales 348252884aeSStefan Eßer 3497e5c51e5SStefan EßerCurrently, there is no locale support on Windows. 3507e5c51e5SStefan Eßer 3517e5c51e5SStefan EßerAdditionally, this `bc` only has support for English (and US English), French, 352252884aeSStefan EßerGerman, Portuguese, Dutch, Polish, Russian, Japanese, and Chinese locales. 353252884aeSStefan EßerPatches are welcome for translations; use the existing `*.msg` files in 354252884aeSStefan Eßer`locales/` as a starting point. 355252884aeSStefan Eßer 356252884aeSStefan EßerIn addition, patches for improvements are welcome; the last two messages in 357252884aeSStefan EßerPortuguese were made with Google Translate, and the Dutch, Polish, Russian, 358252884aeSStefan EßerJapanese, and Chinese locales were all generated with [DeepL][22]. 359252884aeSStefan Eßer 360252884aeSStefan EßerThe message files provided assume that locales apply to all regions where a 361252884aeSStefan Eßerlanguage is used, but this might not be true for, e.g., `fr_CA` and `fr_CH`. 362252884aeSStefan EßerAny corrections or a confirmation that the current texts are acceptable for 363252884aeSStefan Eßerthose regions would be appreciated, too. 364252884aeSStefan Eßer 365252884aeSStefan Eßer## Other Projects 366252884aeSStefan Eßer 367252884aeSStefan EßerOther projects based on this bc are: 368252884aeSStefan Eßer 369252884aeSStefan Eßer* [busybox `bc`][8]. The busybox maintainers have made their own changes, so any 370252884aeSStefan Eßer bugs in the busybox `bc` should be reported to them. 371252884aeSStefan Eßer 372252884aeSStefan Eßer* [toybox `bc`][9]. The maintainer has also made his own changes, so bugs in the 373252884aeSStefan Eßer toybox `bc` should be reported there. 374252884aeSStefan Eßer 3753aa99676SStefan Eßer* [FreeBSD `bc`][23]. While the `bc` in FreeBSD is kept up-to-date, it is better 3765d934bc0SStefan Eßer to [report bugs there][24], as well as [submit patches][25], and the 3775d934bc0SStefan Eßer maintainers of the package will contact me if necessary. 3783aa99676SStefan Eßer 379252884aeSStefan Eßer## Language 380252884aeSStefan Eßer 3817e5c51e5SStefan EßerThis `bc` is written in pure ISO C99, using POSIX 2008 APIs with custom Windows 3827e5c51e5SStefan Eßercompatibility code. 383252884aeSStefan Eßer 384252884aeSStefan Eßer## Commit Messages 385252884aeSStefan Eßer 386252884aeSStefan EßerThis `bc` uses the commit message guidelines laid out in [this blog post][10]. 387252884aeSStefan Eßer 388252884aeSStefan Eßer## Semantic Versioning 389252884aeSStefan Eßer 390252884aeSStefan EßerThis `bc` uses [semantic versioning][11]. 391252884aeSStefan Eßer 392252884aeSStefan Eßer## Contents 393252884aeSStefan Eßer 394252884aeSStefan EßerItems labeled with `(maintainer use only)` are not included in release source 395252884aeSStefan Eßertarballs. 396252884aeSStefan Eßer 397252884aeSStefan EßerFiles: 398252884aeSStefan Eßer 399252884aeSStefan Eßer .gitignore The git ignore file (maintainer use only). 4007e5c51e5SStefan Eßer .gitattributes The git attributes file (maintainer use only). 401*10041e99SStefan Eßer bcl.pc.in A template pkg-config file for bcl. 402252884aeSStefan Eßer configure A symlink to configure.sh to make packaging easier. 403252884aeSStefan Eßer configure.sh The configure script. 404252884aeSStefan Eßer LICENSE.md A Markdown form of the BSD 2-clause License. 405252884aeSStefan Eßer Makefile.in The Makefile template. 406*10041e99SStefan Eßer NEWS.md The changelog. 407252884aeSStefan Eßer NOTICE.md List of contributors and copyright owners. 408252884aeSStefan Eßer RELEASE.md A checklist for making a release (maintainer use only). 409252884aeSStefan Eßer 410252884aeSStefan EßerFolders: 411252884aeSStefan Eßer 412252884aeSStefan Eßer gen The bc math library, help texts, and code to generate C source. 413252884aeSStefan Eßer include All header files. 414252884aeSStefan Eßer locales Locale files, in .msg format. Patches welcome for translations. 415252884aeSStefan Eßer manuals Manuals for both programs. 416252884aeSStefan Eßer src All source code. 41744d4804dSStefan Eßer scripts A bunch of shell scripts to help with development and building. 418252884aeSStefan Eßer tests All tests. 419*10041e99SStefan Eßer vs Files needed for the build on Windows. 420252884aeSStefan Eßer 421252884aeSStefan Eßer[1]: https://www.gnu.org/software/bc/ 422252884aeSStefan Eßer[4]: ./LICENSE.md 423252884aeSStefan Eßer[5]: ./manuals/build.md 424252884aeSStefan Eßer[7]: ./manuals/algorithms.md 425252884aeSStefan Eßer[8]: https://git.busybox.net/busybox/tree/miscutils/bc.c 426252884aeSStefan Eßer[9]: https://github.com/landley/toybox/blob/master/toys/pending/bc.c 427252884aeSStefan Eßer[10]: http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html 428252884aeSStefan Eßer[11]: http://semver.org/ 429252884aeSStefan Eßer[12]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html 43044d4804dSStefan Eßer[17]: https://git.yzena.com/gavin/vim-bc 43144d4804dSStefan Eßer[18]: https://git.yzena.com/gavin/bc_libs 432252884aeSStefan Eßer[19]: ./manuals/benchmarks.md 433252884aeSStefan Eßer[20]: https://git.yzena.com/gavin/bc 434252884aeSStefan Eßer[21]: https://gavinhoward.com/2020/04/i-am-moving-away-from-github/ 435252884aeSStefan Eßer[22]: https://www.deepl.com/translator 4369a995fe1SStefan Eßer[23]: https://cgit.freebsd.org/src/tree/contrib/bc 4375d934bc0SStefan Eßer[24]: https://bugs.freebsd.org/ 4385d934bc0SStefan Eßer[25]: https://reviews.freebsd.org/ 43950696a6eSStefan Eßer[26]: ./manuals/bcl.3.md 44044d4804dSStefan Eßer[27]: https://en.wikipedia.org/wiki/Bus_factor 44144d4804dSStefan Eßer[28]: ./manuals/development.md 442