diff options
author | Gavin Howard <gavin@yzena.com> | 2021-06-15 17:29:34 -0600 |
---|---|---|
committer | Gavin Howard <gavin@yzena.com> | 2021-06-15 17:29:34 -0600 |
commit | 11a88750e61afb35bc92beffc36d5e81a77a5ca3 (patch) | |
tree | 8082bfd355d2e21041139f0c044d7ed5f16c8576 /gen | |
parent | b1033e983550b9bd09c328a9af90e0cb79608062 (diff) | |
download | platform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.tar.gz platform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.tar.bz2 platform_external_bc-11a88750e61afb35bc92beffc36d5e81a77a5ca3.zip |
Add gcd and lcm to lib2
I really want these.
Signed-off-by: Gavin Howard <gavin@yzena.com>
Diffstat (limited to 'gen')
-rw-r--r-- | gen/lib2.bc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gen/lib2.bc b/gen/lib2.bc index 399c7ad3..e90b9757 100644 --- a/gen/lib2.bc +++ b/gen/lib2.bc @@ -129,6 +129,37 @@ define root(x,n){ return r@s } define cbrt(x){return root(x,3)} +define gcd(a,b){ + auto g,s + if(!b)return a + s=scale + scale=0 + a=abs(a)$ + b=abs(b)$ + if(a<b){ + g=a + a=b + b=g + } + while(b){ + g=a%b + a=b + b=g + } + scale=s + return a +} +define lcm(a,b){ + auto r,s + if(!a&&!b)return 0 + s=scale + scale=0 + a=abs(a)$ + b=abs(b)$ + r=a*b/gcd(a,b) + scale=s + return r +} define pi(s){ auto t,v if(s==0)return 3 |