module BOAST::Arithmetic

Defines arithmetic operation, mostly using operator overloading.

Public Instance Methods

!() click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 59
def !
  return Expression::new(Not,nil,self)
end
!=(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 67
def !=(x)
  return Expression::new(Different,self,x)
end
&(x)
Alias for: and
*(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 95
def *(x)
  return Expression::new(Multiplication,self,x)
end
**(x) click to toggle source

Returns an Exponentiation Expression bewtween self and x @param [#to_var] x @return [Expression]

# File lib/BOAST/Language/Arithmetic.rb, line 48
def **(x)
  return Expression::new(Exponentiation,self,x)
end
+(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 87
def +(x)
  return Expression::new(Addition,self,x)
end
+@() click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 107
def +@
  return Expression::new(Plus,nil,self)
end
-(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 91
def -(x)
  return Expression::new(Subtraction,self,x)
end
-@() click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 103
def -@
  return Expression::new(Minus,nil,self)
end
/(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 99
def /(x)
  return Expression::new(Division,self,x)
end
<(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 75
def <(x)
  return Expression::new(Less,self,x)
end
<=(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 83
def <=(x)
  return Expression::new(LessOrEqual,self,x)
end
==(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 63
def ==(x)
  return Expression::new(Equal,self,x)
end
===(x) click to toggle source

Returns an Affectation Expression x into self @param [#to_var] x @return [Expression]

# File lib/BOAST/Language/Arithmetic.rb, line 55
def ===(x)
  return Affectation::new(self,x)
end
>(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 71
def >(x)
  return Expression::new(Greater,self,x)
end
>=(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 79
def >=(x)
  return Expression::new(GreaterOrEqual,self,x)
end
address()
Alias for: reference
and(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 122
def and(x)
  return Expression::new(And, self, x)
end
Also aliased as: &
cast(type) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 134
def cast(type)
  return type.copy("(#{type.type.decl}#{type.dimension? ? " *" : ""})#{self}")
end
coerce(other) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 154
def coerce(other)
  return [other.to_var, self]
end
components( range ) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 138
def components( range )
  var = self.to_var
  if var.type.vector_length == 1
    return self
  else
    existing_set = [*('0'..'9'),*('a'..'z')].first(var.type.vector_length)
    if range.kind_of?(Range) then
      eval "self.s#{existing_set[range].join("")}"
    elsif range.kind_of?(Array) then
      eval "self.s#{existing_set.values_at(*range).join("")}"
    else
      eval "self.s#{existing_set[range]}"
    end
  end
end
dereference() click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 117
def dereference
  return Index::new(self, *(self.dimension.collect(&:start))) if lang == FORTRAN
  return Expression::new(Dereference,nil,self)
end
or(x) click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 128
def or(x)
  return Expression::new(Or, self, x)
end
Also aliased as: |
reference() click to toggle source
# File lib/BOAST/Language/Arithmetic.rb, line 111
def reference
  return Expression::new(Reference,nil,self)
end
Also aliased as: address
|(x)
Alias for: or