zig/lib/std/math
LemonBoy 538d485782 std: Add pow(a,b) for big ints
Implemented following Knuth's "Evaluation of Powers" chapter in TAOCP,
some extra complexity is needed to make sure there's no aliasing and
avoid allocating too many limbs.

A brief example to illustrate why the last point is important:
consider 10^123, since 10 is well within the limits of a single limb we
can safely say that the result will surely fit in:

⌈log2(10)⌉ bit * 123 = 492 bits = 7 limbs

A naive calculation using only the number of limbs yields:

1 limb * 123 = 123 limbs

The space savings are noticeable.
2020-10-04 02:24:40 -04:00
..
big std: Add pow(a,b) for big ints 2020-10-04 02:24:40 -04:00
complex add license header to all std lib files 2020-08-20 16:07:04 -04:00
acos.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
acosh.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
asin.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
asinh.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
atan.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
atan2.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
atanh.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
big.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
cbrt.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
ceil.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
complex.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
copysign.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
cos.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
cosh.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
exp.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
exp2.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
expm1.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
expo2.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
fabs.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
floor.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
fma.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
frexp.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
hypot.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
ilogb.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
inf.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
isfinite.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
isinf.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
isnan.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
isnormal.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
ln.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
log.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
log1p.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
log2.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
log10.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
modf.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
nan.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
pow.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
powi.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
round.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
scalbn.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
signbit.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
sin.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
sinh.zig add license header to all std lib files 2020-08-20 16:07:04 -04:00
sqrt.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
tan.zig update uses of deprecated type field access 2020-09-03 18:10:40 +03:00
tanh.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00
trunc.zig forceEval() -> doNotOptimizeAway() 2020-08-26 10:50:34 +02:00