Re: [Faudiostream-users] error: invalid operands to binary expression ('float' and 'float')

2019-01-01 Thread Julius Smith
I don't think any C or C++ compiler can help here, because (according
to a Web search just), the definition of % in the 98 standard is
"(a/b)*b + a%b == a" instead of what we want "floor(a/b)*b + a%b ==
a".

I would be in favor of a Faust-emitted incompatible operator
overloading of % for floats and doubles "float operator%(const float&,
const float&)" etc.

On Tue, Jan 1, 2019 at 3:34 AM Mykle Hansen  wrote:
>
> Thanks Julius, I see what you mean.  It's just a bit tricky to do,
> because this code is generated by the Faust compiler as part
> of the faust2caqt script.  It’s pretty awkward to fix the source code
> and restart the script halfway through, tho I suppose it’s possible.
>
> I wonder if this is an issue with my compiler version.
> I’m trying to use Apple LLVM version 7.3.0, on OS X 10.11.6.
>
> Are there C++ compilers that know to promote % to fmod() when float arguments 
> are present?
> What’s the current recommended compiler for compiling Faust-generated source?
>
> Thanks,
> -mykle-
>
> >
> > On Dec 31, 2018, at 7:17 PM, Julius Smith  wrote:
> >
> > Hi Mykle,
> >
> > I think the compiler means to convert % to fmod() for floating-point
> > args.  I suggest using fmod() explicitly in place of "%" in your
> > source for now as a workaround.
>
> > - Julius
> >
> > On Mon, Dec 31, 2018 at 7:36 AM Mykle James Hansen  wrote:
> >>
> >> Hi, can I ask some advice?
> >>
> >> I’m trying to compile a 60-line Faust program into a standalone app,
> >> but Faust is generating some code that won’t compile on my system.
> >> The code tries to use a float as the argument to the modulo
> >> operator (%), yielding the error message in the subject line.
> >> Anybody seen this before?
> >>
> >> I’m experiencing this when I try to run faust2caqt — it dies with
> >> a compiler error:
> >>
> >>> looper3.cpp:16736:56: error: invalid operands to binary expression 
> >>> ('float' and 'float')
> >>>fRec4[0] = ((float(iSlow3) * (fRec1[0] + 
> >>> fRec4[1])) % fTemp2);
> >>>
> >>> ~~~ ^ ~~
> >>> looper3.cpp:16737:42: error: invalid operands to binary expression 
> >>> ('float' and 'float')
> >>>ftbl0[int((iTemp1?((fRec4[0] + -1.0f) % 
> >>> fTemp2):131071.0f))] = fRec0[1];
> >>>   ~~ ^ ~~
> >>>
> >>
> >> But the problem's not just faust2caqt.  Running just ‘faust looper3.dsp’ 
> >> also generates those lines.
> >>
> >> OTOH, I am able to run this same Faust program in FaustLive no
> >> problem, and I can also run it in the online editor.
> >>
> >> I just pulled and built the latest Faust compiler (master branch) to see if
> >> that would help, but that didn’t seem to make a change.
> >> Any advice would be most appreciated.
> >>
> >> Yrs stumpedly,
> >> -mykle-
> >>
> >> ___
> >> Faudiostream-users mailing list
> >> Faudiostream-users@lists.sourceforge.net
> >> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> >
> >
> >
> > --
> >
> > Julius O. Smith III 
> > Professor of Music and, by courtesy, Electrical Engineering
> > CCRMA, Stanford University
> > http://ccrma.stanford.edu/~jos/
>
>
>
> ___
> Faudiostream-users mailing list
> Faudiostream-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/faudiostream-users



-- 

Julius O. Smith III 
Professor of Music and, by courtesy, Electrical Engineering
CCRMA, Stanford University
http://ccrma.stanford.edu/~jos/


___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users


Re: [Faudiostream-users] error: invalid operands to binary expression ('float' and 'float')

2019-01-01 Thread Mykle Hansen
Thanks Julius, I see what you mean.  It's just a bit tricky to do,
because this code is generated by the Faust compiler as part
of the faust2caqt script.  It’s pretty awkward to fix the source code
and restart the script halfway through, tho I suppose it’s possible.

I wonder if this is an issue with my compiler version.  
I’m trying to use Apple LLVM version 7.3.0, on OS X 10.11.6.  

Are there C++ compilers that know to promote % to fmod() when float arguments 
are present?  
What’s the current recommended compiler for compiling Faust-generated source?

Thanks,
-mykle-

> 
> On Dec 31, 2018, at 7:17 PM, Julius Smith  wrote:
> 
> Hi Mykle,
> 
> I think the compiler means to convert % to fmod() for floating-point
> args.  I suggest using fmod() explicitly in place of "%" in your
> source for now as a workaround.

> - Julius
> 
> On Mon, Dec 31, 2018 at 7:36 AM Mykle James Hansen  wrote:
>> 
>> Hi, can I ask some advice?
>> 
>> I’m trying to compile a 60-line Faust program into a standalone app,
>> but Faust is generating some code that won’t compile on my system.
>> The code tries to use a float as the argument to the modulo
>> operator (%), yielding the error message in the subject line.
>> Anybody seen this before?
>> 
>> I’m experiencing this when I try to run faust2caqt — it dies with
>> a compiler error:
>> 
>>> looper3.cpp:16736:56: error: invalid operands to binary expression ('float' 
>>> and 'float')
>>>fRec4[0] = ((float(iSlow3) * (fRec1[0] + fRec4[1])) 
>>> % fTemp2);
>>>~~~ 
>>> ^ ~~
>>> looper3.cpp:16737:42: error: invalid operands to binary expression ('float' 
>>> and 'float')
>>>ftbl0[int((iTemp1?((fRec4[0] + -1.0f) % 
>>> fTemp2):131071.0f))] = fRec0[1];
>>>   ~~ ^ ~~
>>> 
>> 
>> But the problem's not just faust2caqt.  Running just ‘faust looper3.dsp’ 
>> also generates those lines.
>> 
>> OTOH, I am able to run this same Faust program in FaustLive no
>> problem, and I can also run it in the online editor.
>> 
>> I just pulled and built the latest Faust compiler (master branch) to see if
>> that would help, but that didn’t seem to make a change.
>> Any advice would be most appreciated.
>> 
>> Yrs stumpedly,
>> -mykle-
>> 
>> ___
>> Faudiostream-users mailing list
>> Faudiostream-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/faudiostream-users
> 
> 
> 
> -- 
> 
> Julius O. Smith III 
> Professor of Music and, by courtesy, Electrical Engineering
> CCRMA, Stanford University
> http://ccrma.stanford.edu/~jos/



___
Faudiostream-users mailing list
Faudiostream-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/faudiostream-users