Method: Flt::FormatBase#initialize
- Defined in:
- lib/float-formats/classes.rb
#initialize(*args) ⇒ FormatBase
Returns a new instance of FormatBase.
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/float-formats/classes.rb', line 50 def initialize(*args) if (args.size == 3 || args.size==4 || args.size==2) && (args.first.kind_of?(Integer) && args[1].kind_of?(Integer)) sign,significand,exponent,normalize = args if normalize.nil? if [nil,true,false].include?(exponent) normalize = exponent exponent = significand significand = sign.abs sign = sign<0 ? -1 : +1 end end @sign,@significand,@exponent = self.class.canonicalized(sign,significand,exponent,normalize) else v = form_class.nan case args.first when form_class v = args.first raise "Too many arguments for FormatBase constructor" if args.size>1 when Array v = args.first raise "Too many arguments for FormatBase constructor" if args.size>1 when FormatBase v = args.first.convert_to(form_class) raise "Too many arguments for FormatBase constructor" if args.size>1 when String v = form_class.from_text(*args) when Bytes v = form_class.from_bytes(*args) when Bits v = form_class.from_bits(*args) when Numeric v = form_class.from_number(args.first) raise "Too many arguments for FormatBase constructor" if args.size>1 when Symbol if args.first.to_s[0..3]!='from' args = ["from_#{args.first}".to_sym] + args[1..-1] end v = form_class.send(*args) end @sign,@significand,@exponent = v.to_a end end |