diff options
author | Karl Berry <karl@freefriends.org> | 2019-04-03 22:33:45 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2019-04-03 22:33:45 +0000 |
commit | 072987993bdb3cf5495219b96ad4056509ccb7ab (patch) | |
tree | 7db7f28ff1713a570c4ef960d5e4c2dbabf0fdc1 /Master/texmf-dist/asymptote/rational.asy | |
parent | 0714966cf940fe8c3abb344bdffd6744f88eec4d (diff) |
asymptote 2.49
git-svn-id: svn://tug.org/texlive/trunk@50744 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/asymptote/rational.asy')
-rw-r--r-- | Master/texmf-dist/asymptote/rational.asy | 73 |
1 files changed, 57 insertions, 16 deletions
diff --git a/Master/texmf-dist/asymptote/rational.asy b/Master/texmf-dist/asymptote/rational.asy index a142063806d..d24da0d6645 100644 --- a/Master/texmf-dist/asymptote/rational.asy +++ b/Master/texmf-dist/asymptote/rational.asy @@ -133,6 +133,26 @@ bool operator ==(rational[][] r, rational[][] s) return all(sequence(new bool(int i) {return r[i] == s[i];},r.length)); } +bool[] operator <(rational[] r, rational s) +{ + return sequence(new bool(int i) {return r[i] < s;},r.length); +} + +bool[] operator >(rational[] r, rational s) +{ + return sequence(new bool(int i) {return r[i] > s;},r.length); +} + +bool[] operator <=(rational[] r, rational s) +{ + return sequence(new bool(int i) {return r[i] <= s;},r.length); +} + +bool[] operator >=(rational[] r, rational s) +{ + return sequence(new bool(int i) {return r[i] >= s;},r.length); +} + rational min(rational a, rational b) { return a <= b ? a : b; @@ -143,35 +163,47 @@ rational max(rational a, rational b) return a >= b ? a : b; } +string string(rational r) +{ + return r.q == 1 ? string(r.p) : string(r.p)+"/"+string(r.q); +} + +string texstring(rational r) +{ + if(r.q == 1) return string(r.p); + string s; + if(r.p < 0) s="-"; + return s+"\frac{"+string(abs(r.p))+"}{"+string(r.q)+"}"; +} -void write(string s="", rational r, suffix suffix=endl) { - if(r.q == 1) - write(s+string(r.p),suffix); - else - write(s+string(r.p)+"/"+string(r.q),suffix); +void write(file fout=stdout, string s="", rational r, suffix suffix=none) +{ + write(fout,s+string(r),suffix); } -void write(string s="", rational[] a, suffix suffix=endl) { +void write(file fout=stdout, string s="", rational[] a, suffix suffix=none) +{ if(s != "") - write(s); + write(fout,s); for(int i=0; i < a.length; ++i) { - write(i,none); - write(':\t',a[i]); + write(fout,i,none); + write(fout,':\t',a[i],endl); } - write(suffix); + write(fout,suffix); } -void write(string s="", rational[][] a, suffix suffix=endl) { +void write(file fout=stdout, string s="", rational[][] a, suffix suffix=none) +{ if(s != "") - write(s); + write(fout,s); for(int i=0; i < a.length; ++i) { rational[] ai=a[i]; for(int j=0; j < ai.length; ++j) { - write(ai[j],tab); + write(fout,ai[j],tab); } - write(); + write(fout,endl); } - write(suffix); + write(fout,suffix); } bool rectangular(rational[][] m) @@ -203,9 +235,18 @@ rational max(rational[] a) rational abs(rational r) { - return rational(abs(r.p),r.q,false); + return rational(abs(r.p),r.q,false); +} + +rational[] operator -(rational[] r) +{ + return sequence(new rational(int i) {return -r[i];},r.length); } +rational[][] rationalidentity(int n) +{ + return sequence(new rational[](int i) {return sequence(new rational(int j) {return j == i ? 1 : 0;},n);},n); +} /* rational r=rational(1,3)+rational(1,4); |