Existing CAS commands --> Prime discussion - Printable Version +- HP Forums (https://www.hpmuseum.org/forum) +-- Forum: HP Calculators (and very old HP Computers) (/forum-3.html) +--- Forum: HP Prime (/forum-5.html) +--- Thread: Existing CAS commands --> Prime discussion (/thread-8577.html) |
RE: Existing CAS commands --> Prime discussion - Joe Horn - 11-29-2018 05:51 PM (11-29-2018 05:18 PM)ijabbott Wrote: Looking at the Giac/Xcas source code for exact and float2rational, they follow different code paths, but do similar things. The main functional difference seems to be that exact imposes a minimum epsilon value of 1e-14, whereas float2rational imposes a minimum epsilon value of 1e-11. Prime's exact() function can be controlled by setting epsilon to any value between 1e-6 and 1e-15. Since the output of float2rational() can therefore be obtained by exact(), there is no need to add float2rational to the Prime's vocabulary... especially now that QPI is also available: qpi(.324532453245) --> 295/909 RE: Existing CAS commands --> Prime discussion - compsystems - 11-29-2018 07:25 PM The problem with QPI is that I can not control the output, so it does not always throw the output in rational format. I propose to add to QPIRLNE QPIRLNE( EXPR, FORMAT) where FORMAT = 0/1/.../6 case 0: (Default): qpirlne( expr, 0) -> Expression as pi or root or ln or e case 1: output only as a expression of QUOTIENT 1: qpirlne( expr, 1) if it does not find the equivalent to quotient (1), but without pi, root, ln, e, it returns the same value case 2: output only as a expression of QUOTIENT 2: qpirlne( expr, 2) if it does not find the equivalent to quotient (2), but without pi, root, ln, e, it returns the same value case 3: output only as a expression of PI: qpirlne( expr, 3) if it does not find the equivalent to PI, it returns the same value case 4: output only as a expression of ROOT qpirlne( expr, 4) if it does not find the equivalent to ROOT, it returns the same value case 5: output only as a expression of LN qpirlne( expr, 5) if it does not find the equivalent to LN, it returns the same value case 6: output only as a expression of EXPR qpirlne( expr, 6) if it does not find the equivalent to EXP, it returns the same value PHP Code: ex#0: http://www.hpmuseum.org/forum/thread-18-post-83655.html RE: Existing CAS commands --> Prime discussion - CyberAngel - 11-29-2018 07:59 PM (11-29-2018 07:25 PM)compsystems Wrote: The problem with QPI is that I can not control the output, so it does not always throw the output in rational format. I suggest a modification: pi, root, e, ln should each have a value of 1,2,4,8 or zero and the combination includes the selected separatable operations or values accordingly . Testing binaries in a progran is easy. It's also an easy syntax for humans to learn and memorize. What do you say? RE: Existing CAS commands --> Prime discussion - ijabbott - 11-29-2018 08:56 PM (11-29-2018 05:51 PM)Joe Horn Wrote:(11-29-2018 05:18 PM)ijabbott Wrote: Looking at the Giac/Xcas source code for exact and float2rational, they follow different code paths, but do similar things. The main functional difference seems to be that exact imposes a minimum epsilon value of 1e-14, whereas float2rational imposes a minimum epsilon value of 1e-11. I don't know if the minimum values of epsilon for exact() and float2rational() are different on the Prime, but the values I gave are accurate for the upstream Xcas source. I.e. for float2rational(), setting epsilon to anything less than 1e-11 behaves the same as setting it to 1e-11. Similarly for exact() with an epsilon less than 1e-14. The float2rational() function sometimes "gives up" and gives you the float back, which is another reason for not implementing it! RE: Existing CAS commands --> Prime discussion - compsystems - 12-06-2018 05:27 PM Other function type commands to incorporate: equal2diff, list2exp Sample c:=circle(0,2); a:=equation(c); b:=4x^2+3x*y+y^2-8; a:=equal2diff(equation(c)); r:=resultant(a,b,x); sy:=solve(r=0,y,'='); sx:=sy:; list2exp(sy,y); y=(-(sqrt((sqrt(17)+7)/3) or y=(-(sqrt((-(sqrt(17))+7)/3) or y=(sqrt((-(sqrt(17))+7)/3) or (y=(sqrt((sqrt(17)+7)/3) Test on-line https://xcas.univ-grenoble-alpes.fr/forum/viewtopic.php?f=28&p=10708 RE: Existing CAS commands --> Prime discussion - compsystems - 12-08-2018 01:31 PM . On GIAC kernel (function operator) not(0) [↵] true not(1) [↵] false NOT(false) [↵] true NOT(true) [↵] false (prefix operator) not false [↵] // It does not interpret. NOT false [↵] true NOT true [↵] false not(0), not(1), NOT(false), NOT(true), NOT false, NOT true [↵] true,false,true,false,true,false test on-line then press [ok], then [exec] button https://www-fourier.ujf-grenoble.fr/~parisse/xcasen.html#exec&filename=%40session&python=0&+not(0)%2C%20not(1)%2C%20NOT(false)%2C%20NOT(true)%2C%20NOT%20false%2C%20NOT%20true& HP Prime CAS not(0), not(1), NOT(false), NOT(true), NOT false, NOT true [↵] 1,0,1,0,1,0 // numerical output in a symbolic environment =( RE: Existing CAS commands --> Prime discussion - compsystems - 12-09-2018 05:07 PM the subtype() command is required to identify the following types of objects Xcas/HPprime type(set[a,a,b]),type(poly1[0,0,3,-1]),type(a,a,b) [↵] returns DOM_LIST,DOM_LIST,DOM_LIST Xcas subtype(set[a,a,b]),subtype(poly1[0,0,3,-1]),subtype(a,a,b) [↵] returns 2,10,1 according to XCAS help subtype() cmd Returns 1 for a sequence: for example (a,a,b), 2 for a set: set[a,a,b], 10 for a polynomial: poly1[0,0,3,-1] and 0 otherwise. PHP Code: purge(a,b) ↵ RE: Existing CAS commands --> Prime discussion - compsystems - 12-09-2018 05:19 PM op() function command: Transform a list into a object type sequence (undocumented command) . Please, make it visible in the catalog menu. Source: https://www-fourier.ujf-grenoble.fr/~parisse/giac/doc/en/cascmd_en/node366.html#sec:makesuiteop Sample: (Disable Textbook display for better understanding) Input: (0,1,2) Output : 0,1,2 Input: seq1:=0,1,2 Output : 0,1,2 Input : op([0,1,2]) Output: 0,1,2 --------------- the inverse command to op() is required makevector() function command: Transform a sequence object into a list object Source: https://www-fourier.ujf-grenoble.fr/~parisse/giac/doc/en/cascmd_en/node367.html Input: makevector(0,1,2) Output: [0,1,2] Input: seq1:=0,1,2 Output : 0,1,2 Input: makevector(seq1) Output: [0,1,2] RE: Existing CAS commands --> Prime discussion - John P - 12-09-2018 11:47 PM (12-09-2018 05:19 PM)compsystems Wrote: op() function command: Transform a list into a object type sequence (undocumented command) There is no makevector command on HP Prime as described in the cascmd_en. I think I used it a while ago but, somehow it misteriously disappeared from HP Prime. RE: Existing CAS commands --> Prime discussion - Joe Horn - 12-10-2018 01:43 AM (12-09-2018 11:47 PM)John P Wrote: There is no makevector command on HP Prime as described in the cascmd_en. I think I used it a while ago but, somehow it misteriously disappeared from HP Prime. It was never included in Prime's vocabulary. RE: Existing CAS commands --> Prime discussion - John P - 12-10-2018 05:45 AM (12-10-2018 01:43 AM)Joe Horn Wrote:(12-09-2018 11:47 PM)John P Wrote: There is no makevector command on HP Prime as described in the cascmd_en. I think I used it a while ago but, somehow it misteriously disappeared from HP Prime. Probably not, but I think I used it after reading, a while ago, the cascmd_en. Now when I type makevector(1,2,3) nothing happens on my HP Prime with the latest firmware. Maybe you have different one. RE: Existing CAS commands --> Prime discussion - CyberAngel - 12-10-2018 08:26 AM (12-10-2018 05:45 AM)John P Wrote:It seems that we always have to state the hardware platform as well as the firmware version.(12-10-2018 01:43 AM)Joe Horn Wrote: It was never included in Prime's vocabulary. RE: Existing CAS commands --> Prime discussion - Joe Horn - 12-11-2018 03:49 AM (12-10-2018 05:45 AM)John P Wrote:(12-10-2018 01:43 AM)Joe Horn Wrote: It was never included in Prime's vocabulary. Although I meant that no version of the HP Prime firmware, ever, has had a 'makevector' command (I checked a bunch of versions, from beta versions before Prime was even announced, through the most recent version, including my 8 Primes which have different official firmware versions installed in each), it is possible that 'makevector' was introduced at some point and then removed again in a subsequent firmware version. Although I wouldn't bet on that, I'd be happy to be proven wrong. RE: Existing CAS commands --> Prime discussion - John P - 12-11-2018 04:56 AM (12-11-2018 03:49 AM)Joe Horn Wrote:(12-10-2018 05:45 AM)John P Wrote: Probably not, but I think I used it after reading, a while ago, the cascmd_en. Now when I type makevector(1,2,3) nothing happens on my HP Prime with the latest firmware. Maybe you have different one. Hello, You could be right. I remember when reading 'cascmd_en' about that command. I was probably trying to see how it worked on HP Prime. Did I used the command? Not sure. Maybe I did not find it and this is probably how I remember it. It is OK. I will not start some big commotion because of the 'makevector' and if I really, really needed it I would probably already write some little prgm. to substitute for it. Cheers, John. RE: Existing CAS commands --> Prime discussion - Joe Horn - 12-11-2018 06:07 AM (12-11-2018 04:56 AM)John P Wrote: I will not start some big commotion because of the 'makevector' and if I really, really needed it I would probably already write some little prgm. to substitute for it. Unless I am mistaken, its functionality can be achieved simply by using square brackets. Example (with Textbook Display turned off): a:=3,4,5 a --> 3,4,5 [a] --> [3,4,5] which is the same output as makevector(a). or: mat2list(a) --> {3,4,5} if you prefer a list instead of a vector. RE: Existing CAS commands --> Prime discussion - compsystems - 12-11-2018 03:28 PM Another alternative way is: eval(seq(a,1)) but the important thing is to have a functional command, makevector(), dedicated for that purpose. For example QR() returns a sequence Q,R, with makevector() returns a vector makevector(QR([[1,2],[3,4]])) There is also a need to document the lowercase qr() function command makevector(qr([[1,2],[3,4]])) RE: Existing CAS commands --> Prime discussion - compsystems - 12-14-2018 02:16 AM The index functional command is not documented but it works. Please, make it visible in the catalog menu. Help text. Index acts as a system variable and as a functional command, For functional command: Index() returns the first position of an object in a list, a string or a set, if it does not find the object returns an error message. index( List/String/Set, Object ) Examples: LIST: index:=0:; index([9,8,-1,8,9,8,7],8) [↵] returns 1 index:=1:; index([9,8,-1,8,9,8,7],8) [↵] returns 2 SET: index:=0:; F_ := set[ H_,E_,L_,L_,O_]; F_ => set[ H_,E_,L_,O_]; the multiplicity of L_ is eliminated index(F_,O_) [↵] returns 3 index(F_,L_) [↵] returns 2 RE: Existing CAS commands --> Prime discussion - compsystems - 12-14-2018 02:30 AM The find functional command, is not documented but it works. Please, make it visible in the catalog menu. Help text: List of positions of an object in a list, a string or a set. find(Object/List/String/Set) index:=1:; F_:=[H_,E_,L_,L_,O_]; find(L_,F_) [↵] returns [ 3, 4 ] RE: Existing CAS commands --> Prime discussion - compsystems - 12-15-2018 02:58 PM The minus functional command, is not documented but it works. Please, make it visible in the catalog menu. set[ "H", "E", "L", "L", "O"] minus set[ "H", "E" ]; [↵] set["L", "O" ] RE: Existing CAS commands --> Prime discussion - compsystems - 12-17-2018 02:22 PM is_included() function synonym of ⊂ is not yet visible in the hp-prime catalog. is_included(set[ "a", "d" ], set[ "b", "a", "c", "a" ]) [↵] 0 For a more intuitive output the numeric value [>0]/0 should be symbolix true/false, in this way the use of the EVALB() command is avoided. evalb(is_included(set[ "a", "d" ], set[ "b", "a", "c", "a" ])) [↵] false test online session Xcas more on sets http://www.hpmuseum.org/forum/thread-11968.html |