Skip to content
macro to change the default floating-point precision in Julia code
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Build Status Build status

This package makes it easy to change the "default" precision of a large body of Julia code, simply by prefixing it with the @changeprecision T expression macro, for example:

@changeprecision Float32 begin
    x = 7.3
    y = 1/3
    z = rand() .+ ones(3,4)

In particular, floating-point literals like 7.3 are reinterpreted as the requested type Float32, operations like / that convert integer arguments to Float64 instead convert to Float32, and random-number or matrix constructors like rand and ones default to Float32 instead of Float64. Several other cases are handled as well: arithmetic with irrational constants like pi, linear-algebra functions (like inv) on integer matrices, etcetera.

The @changeprecision transformations are applied recursively to any include(filename) call, so that you can simply do @changeprecision Float32 include("mycode.jl") to run a whole script mycode.jl in Float32 default precision.

Code that explicitly specifies a type, e.g. rand(Float64), is unaffected by @changeprecision.

Note that only expressions that explicitly appear in the expression (or code inserted by include) are converted by @changeprecision. Code hidden inside external functions that are called is not affected.

You can’t perform that action at this time.