Post Reply 
Existing CAS commands --> Prime discussion
06-26-2017, 06:40 PM (This post was last modified: 06-26-2017 07:23 PM by Tim Wessman.)
Post: #1
Existing CAS commands --> Prime discussion
First, let me explain that this is not a promise to add everything, nor a promise to add ANYTHING. It is simply a place for those interested in potentially getting commands that already exist in the CAS added to Prime, and discuss the merits and reasons behind adding a command. Having rational and reasoned discussion about commands will be the best way to encourage them to be added.

Quantity will not win out here. Quality and reason will. A 20 page post with pictures is not the way to explain best in any case I can possibly imagine.

Please, respond to my questions and educate my poor math skills as to why certain things need inclusion. I am listening and hoping to be wrong. I am especially weak when it comes to linear algebra/matrix type stuff as I stopped at the introduction level courses for my degree in university. Thanks!


Note, these are the rules and thought I personally tend to use when I look at adding a command:

  1. Just because a command exists does not mean Prime should have it. It needs a reason to be included. Existence alone is not that reason.
  2. Commands cannot be 3d specific (all that code required OpenGL behind the scenes for drawing)
  3. Commands cannnot be for file system access or read/write directly. We just don't support that.
  4. Commands cannot depend on code that is not in a license we can support. This generally means GPL or LGPL (no linked library support on hardware)
  5. Commands must fit within hardware limitations. Taking too much memory is problematic. We don't want different features in hardware vs phones and similar.
  6. Will the command impact any existing feature negatively?
  7. Is the command just too difficult to use or explain?
  8. Will the command duplicate existing functionality and not add to it? (synonyms, or a "different way of doing the same thing" aren't good reasons)
  9. Does the command add functionality that will benefit more then just 1 person?
  10. Does the command require modification (more then just "enable it") to the system in order to support? (if so, the bar to add it goes quite a bit higher)
  11. Is there already well written and FULLY explaining documentation? (often, only partial parts of the options are explained in the existing CAS documentation since features get added without documentation sometimes)


These thoughts are all things that go through my head when I look at adding or supporting something. It is a balancing act. Remember that EACH bit of text or documentation is multiplied by <number_of_languages> and thus even "small items" can result in large amount of additional translations. Small changes an ripple into large ones and impact much more then just a few minutes of my time. Developer time, testing time, documentation time, trade offs between things that we might *otherwise* be doing.... all have to be considered.


Without further ado, and starting from the items in the other thread, here is my thoughts/response to Joe's list. Note that I do have the full xcas english documentation and consult it regularly. It is quite out of date in some areas though by this point. :/

Items I immediately see an issue with:
Quote:
Airy_Ai - licensing problem in implementation (depends on LGPL library)
Airy_Bi - licensing problem in implementation in implementation
cloc2 - does not exist in my latest xcas?
clop2 - does not exist in my latest xcas?
conique_reduite - french, and not seeing it in my xcas install
ploc2 - not found in my xcas install
plop2 - not found in my xcas install
quadrique_reduite - french, and not found in my xcas install

Items I can see without much trouble might be useful:
Quote:adjoint_matrix - yes
bernoulli - yes
blockmatrix - yes
changebase - sure
colspace - yes
genpoly - yes
makevector - sure
isom - yes
rowspace - sure
tcoeff - yes, have lcoeff, need this

Commands in permutations/cycles stuff. These were deliberately left out of the CAS at first due to focus on more core thigns. I can probably see an argument to add them now: (any missing from this list?)
Quote:cycle2perm -
cycleinv -
cycles2permu -
is_cycle
is_permu
perminv
permu2cycles
permu2mat
permuorder

Items already turned on, or have the capability already:
Quote:fdistrib - Already in there, expand is a synonym
feuille - already in there, op is a synonym

Items turned on in source, means would be in next, if any, release comes in the future most likely:
Quote:chisquaret
kolmogorovd
kolmogorovt
multinomial
randvector
wilcoxonp
wilcoxons
wilcoxont

Here are items I have questions about or don't understand the purpose:
Quote:as_function_of - doesn't seem to function in my xcas install. as_function_of(b,a) returns an error

border - isn't this already handled by inserting a row? why need a second command here?
boxwhisker - does this provide any benefit over the existing stat capability? Seems less capable and not very useful on prime.
center2interval - not sure what this is useful for
combine - not quite sure how this does anything different from available rewriting commands... e.g. lncollect(ln(x)+2*ln(y)) is the same as collect(ln(x)+2*ln(y),ln) What benefit to having this command as its functionality is already there and more explicit in its use?

count_eq - all of this functionality seems to already be present in "count"???
count_inf - all of this functionality seems to already be present in "count"???
count_sup - all of this functionality seems to already be present in "count"???

det_minor - i don't see any benefit to having this in addition to just plain old "det". Seems to only be more efficient for small matrices...? Are we concerned about det in small matrix speed?

epsilon2zero - seems the cas already does this automatically and there is no way to stop it. (see complaints re such) What specific use would we have here for this in that case?
exp2list - This does not seem to do anything useful...?

groupermu -seems a bit esoteric. Really needed?
heugcd - gcd will do the same thing. Really need to be using a "different algorithm" when the final results should match?

is_pseudoprime - why? Is there a reason you'd want this over the current isPrime?
lll - i don't think I could support adding this command as defined. "LLL" is about the most non-descriptive, easy to accidentally call command name I've ever seen. :-? Is it |||, lll, or III? Font would make all the difference. Bernard and I are discussing a new name.

mRowAdd - seems a convenience function that doesn't add anything really. Only takes 2 operations to do the same thing I think. Really have a need for this?
newList - shortcut function to make a vector filled with zeros...? why need to add it?
ord - "Returns the ASCII code of a character or of the first character of a string." Why? Only use I can possibly think is for sorting purposes?
pari - not understanding what this gives us other then another way to do things like gcd?

psrgcd - same as gcd, just different algo? why would we need this?

rationalroot - not sure what this gets us?
realroot - not sure what this gets us?
reverse_rsolve - not sure how to interpret results or what this is getting us?
roots - what is this giving us over what we have now?
semi_augment - what do augment/semi_augment gain us over existing insertion commands for matrices? is this not possible?
simp2 - is this common enough we need a command to do it vs a two step command sequence?
simplex_reduce - maybe?
sommet - just putting [1] onto the expression will pull out the command. Need a specific command for this? 'sortd([3,2,1])'[1] returns 'sortd'
SortA - is there a reason to really have this since you can use sort() and specify > or <?
SortD - is there a reason to really have this since you can use sort() and specify > or <?, or just sort and then reverse?
split - not exactly sure the utility of this one...?
subsop - this is just basically replacing a row/col or item with something else. Really needed? We can do this already I think.
syst2mat - seems a bit esoteric.
unquote - i have no clue what this is doing or why it would be useful.
user_operator - have a few reservations on how this might interact with the system. I am not against it per say, but it may require some extra work past "turn it on". Not quite sure what "Delete" does (seems to not delete it for me?) or how "Unary" works. nor what "Binary" actually means in this case...

Other commands mentioned:
Quote:nop - this doesn't do anything, what would I document with resepct to "using" it?
evalb - "Since Xcas evaluates booleans automatically, evalb is only here for compatibility and is equivalent to eval" .... so why?
? as inline - doubtful to happen. We have to be conscious of basic users and ? : ; constructs don't really go well for new users. Also, this would require extensive changes to the 2d printing.
union and other inlined only commands can't be supported by the 2d printer without a lot of changes. I doubt the time for that would be usewhile. Hence, we push people to use the supported form.

Finally, items that fail to pass the "only Joe is interested in it" test: :-P
Quote:dfc <----------- :-(
dfc2f <----------- :-(

Joe really likes him some continued fractions. Yessireee that man do like them. Smile

Feel free to suggest any further items or commands you think should be added.

TW

Although I work for HP, the views and opinions I post here are my own.
Find all posts by this user
Quote this message in a reply
Post Reply 


Messages In This Thread
Existing CAS commands --> Prime discussion - Tim Wessman - 06-26-2017 06:40 PM



User(s) browsing this thread: 1 Guest(s)