oops, found another issue - it won't if you try to load the name of a table as an argument inside expr, something like [expr $2 [ $1 ]] won't load. This seems to be related to what I've been already mentioning... workaround would be [expr $s1 [ $1 ]] and then send table name via [symbol $2] as illustrated by attached image.
cheers 2015-06-09 3:47 GMT-03:00 Alexandre Torres Porres <[email protected]>: > thought I'd send a patch with the last issues I brought up. Find it > attached, it sumarizes well the issues. > > I thought of an easier workaround for "$0" and arrays, just send the name > via [symbol $0-x]. I included that in my patch. > > I thought of another good reason to use an array instead of in a [table] > object. You can store values in an array, save it in the patch. Somehow > this is not possible with [table], so you always need to set it and fill it > when you load the patch. > > One last thing, I guess it'd be good to make a more detailed and extensive > help file for expr. It'd make cristal clear how to use all the functions > with the correct syntax and there'd be no need for checking the > documentation website. For instance, it isn't clear anywhere in the > documentation or help file what is the syntax for "sum"/"size", for > instance. > > The help file could also show possible issues and workarounds like I'm > raising up here. > > cheers > > > > 2015-06-09 3:18 GMT-03:00 Alexandre Torres Porres <[email protected]>: > >> Hi, I got more stuff !!! Not really about the functions in expr, though. >> The thing is that expr has a hard time managing symbols and numbers in pd. >> >> *ISSUE 1* - Problems with "$1", "$2", etc... >> >> You can load arguments in expr with no problems IF it is actually being >> loaded into an abstraction that is receiving arguments. But when it is not >> receiving arguments you need to be careful on where it is placed, it needs >> to be placed by itself with spaces before and after. >> >> For example, if you have [expr $1+1] in an abstraction that is receiving >> one argument it's ok. But if that's not the case, it won't load the object. >> The only way you can load the object with no argument being passed to it is >> like [expr $1 + 1], then $1 will receive a value of "0" like it should, and >> everything is fine. >> >> Another example, if you have an "if" expression, such as [expr if($1 == >> 1, x, y)] - there's no deal if it's not getting an argument. But if you >> have it as [expr if( $1 == 1, x, y)] is fine! >> >> I can't think of any good reason why it works when arguments are passed, >> but if fails when there are no arguments and they're getting values of "0". >> If it works one way it also should work the other way. So it's a bug for >> me... >> >> *ISSUE 2 *- Problems with $0 >> >> expr can read tables from the patches, and also variables in the [value] >> object. But when these elements are being used with the local variable "$0" >> we have issues. >> >> Influenced by the 13.locality example in Pd, I'm used to create local >> variables such as "$0-x". But in expr this won't load as a symbol, $0 will >> become the patch code number "-" will define subtraction and "x" will be >> considered the variable. I guess it'd make sense if if it worked >> considering "$0-x" as a symbol (thus, a variable) but I understand expr is >> actually doing what makes sense to it. I also think it may be a pain trying >> to make this work. I'm actually fine with it if it turns out to be too >> troublesome, but it'd be nice to mention this in the documentation or help >> file. >> >> But if we need to do this in some other way, we also have a hard time >> dealing with it. If you try "$0x", "$0.x" or "$0_x" it won't load! Now, I >> assume this problem might be closely related to the first issue I mentioned >> here with "$1". So it might be fixable in a similar fashion. >> >> Continuing, the only way it works is if you put "$0" after a symbol, such >> as "x$0" or "x_$0". I can't think of a reason why this works and not the >> other, so looks like a bug for me too. >> >> But then, is there any problem if you have to do it only like this? >> Actually, there is! All is fine in the case of [value], it'll load [v x$0] >> or whatever. All is also fine if you are using a table object, such as >> [table x$0] or [table x_$0]. The problem emerges when you are using an >> array not loaded as an object. So, if you're using a table that you need >> for display, it's quite a headache. >> >> This is because "array" has issues of his own. If you have an array named >> "x$0" it won't read in an object like [tabread x$0]! Maybe this is a >> parallel issue that should be looked into. I guess they way Pd handles $0 >> in messages is tricky, but it is the opposite issue of expr. The array will >> work fine with $0 before symbols, but won't work well if it's afterwards. >> So an array named "x$0" won't work... >> >> Well, it does work if you set it as "$0-x" for example. But I've already >> mentioned how it won't load in [expr]... >> >> So, basically, if you want to do this, you need a somewhat complicated >> workaround. Since expr will only load something like "x_$0", you need to >> create an array and replace $0 by the actual number of that patch. Further >> workarounds may allow you to automatically rename that array when you load >> the patch, but it's not easy. >> >> I know arrays are not making it easy, and maybe they could collaborate - >> but it'd be just fine if expr allowed something like "$0_x" like all other >> objects do! That'd be great. >> >> *ISSUE 3 *- Problems with exponential numbers >> >> Pd will automatically convert "0.00001" to "1e-05". This will work in >> every object in Pd, but not expr! Because of this, we need workarounds such >> as putting it in parenthesis, like [expr (0.00001)], or use the pow >> function in expr, like [expr pow(10, -5)]. But since the behaviour in expr >> is different than everything else, I consider it a bug that may be worked >> out. >> >> Looking forward for the fixes. Please tell me if you think you can work >> this all out. >> >> Thanks >> >> >> >> 2015-06-08 12:32 GMT-03:00 Shahrokh Yadegari <[email protected]>: >> >>> Thank Alexandre for that detailed list. It is very helpful. I will >>> address them in the next couple of weeks, and now that Miller has suggested >>> a path forward for committing the changes, hopefully the fixes show up in >>> the official releases soon. >>> >>> As for Max/MSP versions, yes I have had plans for a while, and it is on >>> my list to be done this summer, if something else does not take over my >>> allocated time. >>> >>> cheers, >>> Shahrokh >>> >>> >>> On Sun, Jun 7, 2015 at 11:45 PM, Alexandre Torres Porres < >>> [email protected]> wrote: >>> >>>> Hello, great to hear from you. Yes, I got that fix, but I never >>>> compiled it and was just hoping someday it'd show up as an update, and I'm >>>> just worried it never came to be. Sorry to put you on the spot. I'm still >>>> learning about the bug reports work and get dealt with in Pd, people in the >>>> list were explaining to me today in fact. But since everyone is gathered >>>> here, instead of me making a bug report, I'll just post everything I found >>>> wrong or funny. I spent a great deal of time testing, here we go: >>>> >>>> - the help file of [expr] gives the wrong link to expr documentation, >>>> it points to http://www.crca.ucsd.edu/~yadegari/expr.html where it >>>> should point to the new link http://yadegari.org/expr/expr.html >>>> >>>> - The random function is not listed in the documentation link above. >>>> But it's great and I always use it. It has a bug in Pd extended 0.42 where >>>> [expr random(1000, 100001)] will eventually give negative numbers. But, >>>> somehow, this seems to be fixed in vanilla 0.46-6. >>>> >>>> - the "if" function is mentioned twice in the documentation >>>> >>>> - The function "Sum" is not working yet. >>>> >>>> - In the code we see other functions for tables that are not mentioned >>>> on the >>>> documentation link They are: "avg", "Avg" and "Store" - but none of >>>> which seem to be working as well! >>>> >>>> - there's this "copysig" issue (which is written wrong int the >>>> documentation as "copysign") and it seems to not be working. >>>> >>>> - expr will consider integers as integers, so [expr 5 / 4] results in >>>> "1". You can do something like [expr 5./ 4] for it to work, or use the >>>> float function like this: [expr float(5) / 4]. Now, this may not be a bug >>>> or wrong, but if you use [expr float(1.4)] it'll return you "1" instead of >>>> "1.4", and I guess it should be "1.4" anyway... >>>> >>>> - [expr imodf($f1)] and [expr ldexp($f1)] are not loading >>>> >>>> - [expr drem($f1)] loads with one argument, but the documentation says >>>> it takes two arguments. Even though it loads, it doesn't seem to be >>>> working, it sends lots of errors, such as "error: expr: FUNC_EVAL(1291): >>>> bad right type 0 /// expr: bang: unrecognized result 0 /// error: expr: >>>> FUNC_EVAL(1291): bad right type 3 >>>> >>>> - One's comlpement will load like this [expr $f1 ~ $f2]. Not sure what >>>> it's supposed to be, but it seems the second argument doesn't affect it at >>>> all. >>>> >>>> - "floor" and "ceil" will load with two arguments, documentation says >>>> it was only one! Not sure what they're supposed to be, but it doesn't seem >>>> right cause it always returns the 1st argument in both of them. >>>> >>>> - "fmod", wrong number of arguments in the documentation, it takes two! >>>> >>>> - In the documentation, you have " >>>> atan() >>>> 1 >>>> inverse hyperbolic tangent" >>>> but I belive it should be "atan*h*" >>>> >>>> - Code says >>>> >>>> * The following are done but not popular enough in math libss >>>> * to be included yet >>>> * hypoth - Euclidean distance function >>>> * trunc >>>> * round >>>> * nearbyint - >>>> >>>> >>>> So, maybe they are popular enough nowadays? Maybe they're ready to be >>>> included? >>>> >>>> Well, that's what I found so far. I'm no mathematician, so I can't find >>>> anything else I guess. I could test other functions but I wouldn't know if >>>> they are correct. >>>> >>>> Anyway, sorry I can't help more getting into the code issues. I'm at a >>>> point now that I wish I know more about programming so I can help Pd >>>> development. >>>> >>>> Thanks >>>> >>>> >>>> >>>> 2015-06-08 3:08 GMT-03:00 Shahrokh Yadegari <[email protected]>: >>>> >>>>> Hi Alexandre, >>>>> >>>>> This seems to be a bug. I am not sure why I missed the 'n' on the name >>>>> either. As it seems that this function has never worked, we should fix the >>>>> name as well. The solution is simple as follows: >>>>> >>>>> extra/expr~/vexp_fun.c >>>>> >>>>> 188c188 >>>>> >>>>> < {"copysign", ex_copysign, 2}, >>>>> >>>>> --- >>>>> >>>>> > {"copysig", ex_copysign, 1}, >>>>> >>>>> >>>>> I checked the mailing list (I am sorry that I am not a regular reader) >>>>> and I see some concerns about the maintenance of the code. I am happy to >>>>> fix the problems and I thought I sent you a fix for the last problem you >>>>> had found in 2009. Can somebody point me to a document or a webpage that >>>>> explains what the best way is to introduce new changes to the pd source >>>>> base. Miller, should I pass the fixes to you, or is there another >>>>> repository? >>>>> >>>>> In the meanwhile, if there are other bugs in expr that anybody else >>>>> knows, please send them to me and I will fix them as soon as I can. >>>>> >>>>> best, >>>>> Shahrokh >>>>> >>>>> On Sun, Jun 7, 2015 at 12:57 PM, Alexandre Torres Porres < >>>>> [email protected]> wrote: >>>>> >>>>>> hi there, I was checking the source of expr (find it attached) and >>>>>> saw this "copysign" function that I needed for a formula, but I can't get >>>>>> it to work/load. >>>>>> >>>>>> I'm trying something like [expr copysign($f1)] and it's not >>>>>> happening. The expr manual page in http://yadegari.org/expr/expr.html >>>>>> tells about this function as well, here it is: >>>>>> >>>>>> copysign() >>>>>> 1 >>>>>> copy sign of a number(added in version 0.4) >>>>>> >>>>>> So it seems I'm supposedly doing the right thing... is it a bug? I'm >>>>>> on extended 0.42 and it says that it's expr version 0.4 when it loads. >>>>>> >>>>>> cheers >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Shahrokh Yadegari >>>>> Professor of Composition and Sound Design, >>>>> Theatre and Dance Department >>>>> University of California, San Diego >>>>> Director, Initiative for Digital Exploration of Arts and Science, >>>>> (IDEAS) >>>>> California Institute for Telecommunications and Information >>>>> Technologies (Calit2) >>>>> Email: [email protected] >>>>> Web: http://yadegari.org >>>>> Tel: (858) 822-4113 >>>>> Fax: (858) 534-1080 >>>>> >>>>> >>>> >>> >>> >>> -- >>> Shahrokh Yadegari >>> Professor of Composition and Sound Design, >>> Theatre and Dance Department >>> University of California, San Diego >>> Director, Initiative for Digital Exploration of Arts and Science, (IDEAS) >>> California Institute for Telecommunications and Information Technologies >>> (Calit2) >>> Email: [email protected] >>> Web: http://yadegari.org >>> Tel: (858) 822-4113 >>> Fax: (858) 534-1080 >>> >>> >> >
_______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
