diff options
author | Erich Eckner <git@eckner.net> | 2016-05-30 21:28:42 +0200 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2016-05-30 21:28:42 +0200 |
commit | 1011a5fadfe82a0fab23714be92509d070251195 (patch) | |
tree | 7328b7747af1d93341fd13f5ce8b0d82053a32d8 | |
parent | 4547093c9fcc350c3e5ab52e3f01dfa569524baf (diff) | |
download | units-1011a5fadfe82a0fab23714be92509d070251195.tar.xz |
gmp-Zeug aus lowlevelunit.pas in gmpextras.pas ausgelagert
-rw-r--r-- | gmpextras.pas | 44 | ||||
-rw-r--r-- | lowlevelunit.pas | 27 |
2 files changed, 45 insertions, 26 deletions
diff --git a/gmpextras.pas b/gmpextras.pas new file mode 100644 index 0000000..4565682 --- /dev/null +++ b/gmpextras.pas @@ -0,0 +1,44 @@ +unit gmpextras; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, gmp; + +function mpfToStr(f: mpf_t): string; +function mpfMyRoot(rad: mpf_t; wzlExp: int64): extended; + +implementation + +uses + math; + +// allgemeine Funktionen ******************************************************* + +function mpfToStr(f: mpf_t): string; +var + ex: mp_exp_t; + off: byte; +begin + result:=mpf_get_str(nil,ex,10,0,f); + off:=1+byte(pos('-',result)=1); + if result='' then + result:='0' + else if ex=1 then + result:=copy(result,1,off)+','+copy(result,off+1,length(result)-off) + else + result:=copy(result,1,off)+','+copy(result,off+1,length(result)-off)+' * 10^'+inttostr(ex-1); +end; + +function mpfMyRoot(rad: mpf_t; wzlExp: int64): extended; +var + ex: mp_exp_t; +begin + result:=power(mpf_get_d_2exp(ex,rad),1/wzlExp); + result:=result*power(2,ex/wzlExp); +end; + +end. + diff --git a/lowlevelunit.pas b/lowlevelunit.pas index c928452..60f9e9e 100644 --- a/lowlevelunit.pas +++ b/lowlevelunit.pas @@ -5,7 +5,7 @@ unit lowlevelunit; interface uses - math, Classes, SysUtils, gmp, RegExpr, process, FPimage; + math, Classes, SysUtils, RegExpr, process, FPimage; type generic tArray<T> = array of T; @@ -42,9 +42,7 @@ operator = (x1,x2: tIntPoint): boolean; operator = (x1,x2: tExtPoint): boolean; function signSqr(x: extended): extended; inline; -function mpfToStr(f: mpf_t): string; function myTimeToStr(t: extended): string; -function mpfMyRoot(rad: mpf_t; wzlExp: int64): extended; function cmpStr(s1,s2: string): longint; function mitte(s1,s2: string): string; function myFloatToStr(x: extended): string; overload; @@ -151,21 +149,6 @@ begin result:=sign(x)*sqr(x); end; -function mpfToStr(f: mpf_t): string; -var - ex: mp_exp_t; - off: byte; -begin - result:=mpf_get_str(nil,ex,10,0,f); - off:=1+byte(pos('-',result)=1); - if result='' then - result:='0' - else if ex=1 then - result:=copy(result,1,off)+','+copy(result,off+1,length(result)-off) - else - result:=copy(result,1,off)+','+copy(result,off+1,length(result)-off)+' * 10^'+inttostr(ex-1); -end; - function myTimeToStr(t: extended): string; var tim: int64; @@ -198,14 +181,6 @@ begin result:=inttostr(tim)+'Woche'+result; end; -function mpfMyRoot(rad: mpf_t; wzlExp: int64): extended; -var - ex: mp_exp_t; -begin - result:=power(mpf_get_d_2exp(ex,rad),1/wzlExp); - result:=result*power(2,ex/wzlExp); -end; - function cmpStr(s1,s2: string): longint; var i: longint; |