#
#	Copyright 1993, Center for Computer Vision and Visualization,
#	University of Florida.  All rights reserved.
#

# Integer operations for the Int Discrete Image

constructor I(float) I(IA_Bit)
constructor I(float) I(u_char)
constructor I(float) I(int)
unary pointwise to_int subop=int I(int) I(float)
unary pointwise to_uchar subop=u_char I(u_char) I(float)



binary pointwise commutative operator+ I(float) I(float) I(float)
binary pointwise commutative operator+ I(float) float I(float)
pointwise operator+= I(float) I(float)
pointwise operator+= I(float) float

binary pointwise non-commutative operator- I(float) I(float) I(float)
binary pointwise non-commutative operator- I(float) float I(float)
binary pointwise non-commutative operator- float I(float) I(float)
unary pointwise operator- I(float) I(float)
pointwise operator-= I(float) I(float)
pointwise operator-= I(float) float

binary pointwise commutative operator* I(float) I(float) I(float)
binary pointwise commutative operator* I(float) float I(float)
pointwise operator*= I(float) I(float)
pointwise operator*= I(float) float

#binary pointwise commutative operator* I(float) I(IA_Bit) I(float)
#binary pointwise commutative operator* float I(IA_Bit) I(float)
#pointwise operator*= I(float) I(IA_Bit)

binary pointwise non-commutative operator/ I(float) I(float) I(float)
binary pointwise non-commutative operator/ I(float) float I(float)
binary pointwise non-commutative operator/ float I(float) I(float)
pointwise operator/= I(float) I(float)
pointwise operator/= I(float) float

binary pointwise non-commutative pseudo_div I(float) I(float) I(float)
binary pointwise non-commutative pseudo_div I(float) float I(float)
binary pointwise non-commutative pseudo_div float I(float) I(float)
unary pointwise pseudo_inv I(float) I(float)



binary pointwise commutative operator&& I(float) I(float) I(float)
binary pointwise commutative operator&& I(float) float I(float)

binary pointwise commutative operator|| I(float) I(float) I(float)
binary pointwise commutative operator|| I(float) float I(float)

unary pointwise operator! I(float) I(float)



binary strictrel non-commutative operator< I(float) I(float) int
binary strictrel non-commutative operator< I(float) float int
binary strictrel non-commutative operator< float I(float) int

binary strictrel non-commutative operator<= I(float) I(float) int
binary strictrel non-commutative operator<= I(float) float int
binary strictrel non-commutative operator<= float I(float) int

binary strictrel commutative operator== I(float) I(float) int
binary strictrel commutative operator== I(float) float int

binary strictrel commutative strict_ne subop=operator!= I(float) I(float) int
binary strictrel commutative strict_ne subop=operator!= I(float) float int

binary strictrel non-commutative operator>= I(float) I(float) int
binary strictrel non-commutative operator>= I(float) float int
binary strictrel non-commutative operator>= float I(float) int

binary strictrel non-commutative operator> I(float) I(float) int
binary strictrel non-commutative operator> I(float) float int
binary strictrel non-commutative operator> float I(float) int

binary pointwise non-commutative chi_lt subop=operator< I(float) I(float) I(IA_Bit)
binary pointwise non-commutative chi_lt subop=operator< I(float) float I(IA_Bit)
binary pointwise non-commutative chi_lt subop=operator< float I(float) I(IA_Bit)

binary pointwise non-commutative chi_le subop=operator<= I(float) I(float) I(IA_Bit)
binary pointwise non-commutative chi_le subop=operator<= I(float) float I(IA_Bit)
binary pointwise non-commutative chi_le subop=operator<= float I(float) I(IA_Bit)

binary pointwise commutative chi_eq subop=operator== I(float) I(float) I(IA_Bit)
binary pointwise commutative chi_eq subop=operator== I(float) float I(IA_Bit)

binary pointwise commutative chi_ne subop=operator!= I(float) I(float) I(IA_Bit)
binary pointwise commutative chi_ne subop=operator!= I(float) float I(IA_Bit)

binary pointwise non-commutative chi_ge subop=operator>= I(float) I(float) I(IA_Bit)
binary pointwise non-commutative chi_ge subop=operator>= I(float) float I(IA_Bit)
binary pointwise non-commutative chi_ge subop=operator>= float I(float) I(IA_Bit)

binary pointwise non-commutative chi_gt subop=operator> I(float) I(float) I(IA_Bit)
binary pointwise non-commutative chi_gt subop=operator> I(float) float I(IA_Bit)
binary pointwise non-commutative chi_gt subop=operator> float I(float) I(IA_Bit)



unary pointwise sqrt I(float) I(float)
unary pointwise sqr I(float) I(float)
unary pointwise fabs I(float) I(float)

unary pointwise cos I(float) I(float)
unary pointwise sin I(float) I(float)
unary pointwise tan I(float) I(float)

unary pointwise exp I(float) I(float)
unary pointwise log I(float) I(float)

unary pointwise ceil I(float) I(float)
unary pointwise floor I(float) I(float)


binary pointwise commutative max I(float) I(float) I(float)
binary pointwise commutative max I(float) float I(float)
binary pointwise commutative min I(float) I(float) I(float)
binary pointwise commutative min I(float) float I(float)

reduction sum zero=0 subop=operator+ float I(float)
reduction product zero=1 subop=operator* float I(float)
reduction max zero=infinity() subop=max float I(float)
reduction min zero=-infinity() subop=min float I(float)
