[erlang-bugs] Pattern matching of floats does not work in the shell

Robert Virding <>
Sat Sep 3 00:32:20 CEST 2011


Are you sure that <<64,46,0,0,0,0,0,0>> is a legal float. If not then trying to "extract" a float from it is bound to fail. Otherwise I have no problems pattern matching 64 bit floats in the shell:

2> B = <<1.4:64/float>>.
<<"?öffffff">>
3> <<F:64/float>> = B.
<<"?öffffff">>
4> F.
1.4

I am running R14B03.

Robert

----- Original Message -----
> Hello,
> 
> We've just noticed that simple pattern matching of 64 bits floats do
> not work in the shell or in the eval parameter of erl(1)
> 
> For example, the following line will crash:
> erl -eval '<<X:64/float>> = <<1.4:64/float>>,init:stop().' -noshell
> 
> Or with the following session:
> -----
> Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:2:2] [rq:2]
> [async-threads:0] [hipe] [kernel-poll:false]
> 
> Eshell V5.8.5  (abort with ^G)
> 1> B = <<64,46,0,0,0,0,0,0>>.
> <<64,46,0,0,0,0,0,0>>
> 2> <<F:64/float>> = B.
> ** exception error: no match of right hand side value
> <<64,46,0,0,0,0,0,0>>
> -----
> 
> While pattern matching with integers works:
> erl -eval '<<X:64>> = <<1:64>>,init:stop().' -noshell
> 
> The pattern matching code works properly when compiled (BEAM and
> HiPE).
> 
> Paul
> --
> Semiocast            http://semiocast.com/
> +33.183627948 - 20 rue Lacaze, 75014 Paris
> 
> _______________________________________________
> erlang-bugs mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-bugs
> 


More information about the erlang-bugs mailing list