Csound Csound-dev Csound-tekno Search About

[Csnd] conditionals, program flow ternary form question

Date2019-10-01 20:48
Frompablozoani
Subject[Csnd] conditionals, program flow ternary form question
Hello developers, the following code prints to console two lines of "division
by zero" while i expected the divisions to be skipped if value2 == 0. Is
this the normal behavior? Using Csound version:6130 Precision:double
(64-bit) win10

input


output


Regards



--
Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2019-10-01 20:51
Frompablozoani
SubjectRe: [Csnd] conditionals, program flow ternary form question
(raw text option of forum didn't work)

input 

instr 1
 i_value = 0
 i_value2 = 0
 
 i_value = (i_value2 == 0) ? i_value :\
           (i_value < 0) ? (1 / floor(i_value)) :\
           (i_value > 0) ? (1 / ceil(i_value)) : 0
 
 print i_value
endin

output

SECTION 1:
new alloc for instr 1:
WARNING: Division by zero
WARNING: Division by zero
instr 1:  i_value = 0.000



--
Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2019-10-01 21:12
Fromjohn
SubjectRe: [Csnd] conditionals, program flow ternary form question
Yes looks like a major generic bug in a?b:c

Will take a look later but with -v option one can see it generates dubious 
code


=.i args:       i_value 0
=.i args:       i_value2        0
== args:        #b0     i_value2        0
< args: #b1     i_value 0
floor.i args:   #i2     i_value
##div.ii args:  #i3     1       #i2
> args: #b4     i_value 0
ceil.i args:    #i5     i_value
##div.ii args:  #i6     1       #i5
:cond.i args:   #i7     #b4     #i6     0
:cond.i args:   #i8     #b1     #i3     #i7
:cond.i args:   i_value #b0     i_value #i8
print args:     i_value


==John ff

On Tue, 1 Oct 2019, pablozoani wrote:

> Hello developers, the following code prints to console two lines of "division
> by zero" while i expected the divisions to be skipped if value2 == 0. Is
> this the normal behavior?

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2019-10-03 23:41
FromPablo Zoani Heffele
SubjectRe: [Csnd] conditionals, program flow ternary form question
Thanks for replying John. By the way, non ternary form works as expected. Regards

De: A discussion list for users of Csound <CSOUND@LISTSERV.HEANET.IE> en nombre de john <jpff@CODEMIST.CO.UK>
Enviado: martes, 1 de octubre de 2019 17:12
Para: CSOUND@LISTSERV.HEANET.IE
Asunto: Re: [Csnd] conditionals, program flow ternary form question

Yes looks like a major generic bug in a?b:c

Will take a look later but with -v option one can see it generates dubious
code


=.i args:       i_value 0
=.i args:       i_value2        0
== args:        #b0     i_value2        0
< args: #b1     i_value 0
floor.i args:   #i2     i_value
##div.ii args:  #i3     1       #i2
> args: #b4     i_value 0
ceil.i args:    #i5     i_value
##div.ii args:  #i6     1       #i5
:cond.i args:   #i7     #b4     #i6     0
:cond.i args:   #i8     #b1     #i3     #i7
:cond.i args:   i_value #b0     i_value #i8
print args:     i_value


==John ff

On Tue, 1 Oct 2019, pablozoani wrote:

> Hello developers, the following code prints to console two lines of "division
> by zero" while i expected the divisions to be skipped if value2 == 0. Is
> this the normal behavior?

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here


Date2019-10-04 13:06
Fromjohn
SubjectRe: [Csnd] conditionals, program flow ternary form question
I am working on a fix.  Unfortunately this is a complex area of code and 
it is taking a lot og time.

==John

On Thu, 3 Oct 2019, Pablo Zoani Heffele wrote:

> Thanks for replying John. By the way, non ternary form works as expected.
> Regards
> 
> Obtener Outlook para Android
>

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here

Date2019-10-08 16:01
Fromjohn
SubjectRe: [Csnd] conditionals, program flow ternary form question
Fixed in github just now.  Sorry it took so long



On Tue, 1 Oct 2019, pablozoani wrote:

> (raw text option of forum didn't work)
>
> input
>
> instr 1
> i_value = 0
> i_value2 = 0
>
> i_value = (i_value2 == 0) ? i_value :\
>           (i_value < 0) ? (1 / floor(i_value)) :\
>           (i_value > 0) ? (1 / ceil(i_value)) : 0
>
> print i_value
> endin
>
> output
>
> SECTION 1:
> new alloc for instr 1:
> WARNING: Division by zero
> WARNING: Division by zero
> instr 1:  i_value = 0.000
>
>
>
> --
> Sent from: http://csound.1045644.n5.nabble.com/Csound-General-f1093014.html
>
> Csound mailing list
> Csound@listserv.heanet.ie
> https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
> Send bugs reports to
>        https://github.com/csound/csound/issues
> Discussions of bugs and features can be posted here
>

Csound mailing list
Csound@listserv.heanet.ie
https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND
Send bugs reports to
        https://github.com/csound/csound/issues
Discussions of bugs and features can be posted here