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

#
# $Log: complex-operations.desc,v $
# Revision 1.3  1994/01/31  15:54:13  thoth
# chi_functions now return BitDIs.
# more pointwise complex functions.
#
# Revision 1.2  1993/12/29  17:27:24  thoth
# reductions require a zero now.
#
# Revision 1.1  1993/11/29  22:25:25  thoth
# Initial revision
#

# Integer operations for the Int Discrete Image

constructor I(complex) I(IA_Bit)
constructor I(complex) I(u_char)
constructor I(complex) I(int)
constructor I(complex) I(float)

##unary pointwise to_int subop=int I(int) I(complex)
##unary pointwise to_uchar subop=u_char I(u_char) I(complex)

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

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

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

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

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

#binary pointwise non-commutative polar I(float) I(float) I(complex)
#binary pointwise non-commutative polar I(float) float I(complex)
#binary pointwise non-commutative polar float I(float) I(complex)

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

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



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

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


unary pointwise sqrt I(complex) I(complex)
unary pointwise sqr I(complex) I(complex)


unary pointwise abs_f subop=abs I(float) I(complex)
unary pointwise arg_f subop=abs I(float) I(complex)
unary pointwise conj subop=conj I(complex) I(complex)
unary pointwise imag_f subop=imag I(float) I(complex)
unary pointwise real_f subop=real I(float) I(complex) 

reduction sum zero=0 subop=operator+ complex I(complex)
reduction product zero=1 subop=operator* complex I(complex)
