# Save BigFloat Array to a file

**URL:** <https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210>\
**Category:** General Usage\
**Created:** [March 22, 2019, 6:19pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210 "2019-03-22T18:19:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![GoodNews](https://avatars.discourse-cdn.com/v4/letter/g/f07891/32.png) [@GoodNews](https://discourse.julialang.org/u/GoodNews)\
**Post date:** [March 22, 2019, 6:19pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/1 "2019-03-22T18:19:11Z")

</div>

Hello together,  
I am trying to save a big BigFloat Array to a file (The format does not matter to me).  
HDF5 hasn’t any function that would accept BigFloat Datatype, JLD is incredibly slow on saving and loading the array and JLD2 standard functions for some reason fail to load the \*.jld2 again throwing the following Error

```julia
@JLD2.load (dataPath) data
ERROR: ArgumentError: cannot parse "" as BigFloat
Stacktrace:
 [1] _parse_failure(::Type, ::String, ::Int64, ::Int64) at ./parse.jl:360 (repeats 2 times)
 [2] tryparse_internal at ./parse.jl:356 [inlined]
 [3] parse at ./parse.jl:366 [inlined]
 [4] rconvert at /home/benejo/.julia/packages/JLD2/KjBIK/src/data.jl:809 [inlined]
 [5] jlconvert at /home/benejo/.julia/packages/JLD2/KjBIK/src/data.jl:576 [inlined]
 [6] macro expansion at /home/benejo/.julia/packages/JLD2/KjBIK/src/dataio.jl:70 [inlined]
 [7] macro expansion at ./simdloop.jl:73 [inlined]
 [8] read_array!(::Array{BigFloat,2}, ::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadRepresentation{BigFloat,JLD2.CustomSerialization{String,JLD2.Vlen{String}}}) at /home/benejo/.julia/packages/JLD2/KjBIK/src/dataio.jl:68
 [9] read_array(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadDataspace, ::JLD2.ReadRepresentation{BigFloat,JLD2.CustomSerialization{String,JLD2.Vlen{String}}}, ::Int64, ::UInt16, ::JLD2.RelOffset, ::Array{JLD2.ReadAttribute,1}) at /home/benejo/.julia/packages/JLD2/KjBIK/src/datasets.jl:323
 [10] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadRepresentation{BigFloat,JLD2.CustomSerialization{String,JLD2.Vlen{String}}}, ::Array{JLD2.ReadAttribute,1}) at /home/benejo/.julia/packages/JLD2/KjBIK/src/datasets.jl:173
 [11] read_data(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.ReadDataspace, ::UInt8, ::Int64, ::Int64, ::Int64, ::UInt16, ::JLD2.RelOffset, ::Array{JLD2.ReadAttribute,1}) at /home/benejo/.julia/packages/JLD2/KjBIK/src/datasets.jl:149
 [12] load_dataset(::JLD2.JLDFile{JLD2.MmapIO}, ::JLD2.RelOffset) at /home/benejo/.julia/packages/JLD2/KjBIK/src/datasets.jl:92
 [13] getindex(::JLD2.Group{JLD2.JLDFile{JLD2.MmapIO}}, ::String) at /home/benejo/.julia/packages/JLD2/KjBIK/src/groups.jl:108
 [14] read(::JLD2.JLDFile{JLD2.MmapIO}, ::String) at /home/benejo/.julia/packages/JLD2/KjBIK/src/JLD2.jl:326
 [15] #293 at /home/benejo/.julia/packages/JLD2/KjBIK/src/loadsave.jl:77 [inlined]
 [16] #jldopen#31(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::getfield(Main, Symbol("##293#294")), ::String) at /home/benejo/.julia/packages/JLD2/KjBIK/src/loadsave.jl:4
 [17] jldopen(::Function, ::String) at /home/benejo/.julia/packages/JLD2/KjBIK/src/loadsave.jl:2
 [18] top-level scope at /home/benejo/.julia/packages/JLD2/KjBIK/src/loadsave.jl:76

```

Has anybody experience with saving BigFloat to a file and could help me here?  
Greetings,  
GoodNews

---

<div class="post-metadata">

**Author:** ![longemen3000](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/longemen3000/32/7298_2.png) [@longemen3000](https://discourse.julialang.org/u/longemen3000)\
**Post date:** [March 22, 2019, 8:06pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/2 "2019-03-22T20:06:11Z")

</div>

maybe a csv?

```julia
using DelimitedFiles
#creating a BigFloat array, 1D, but the method should work with more dimensions of BigFloats
x1=BigFloat("1.22222222222222222222222222222222222222222222222221")
x2=BigFloat("1.22222222222222222222222222222222222222222222222222")
A = Array{BigFloat,1}(undef,2)
A = [x1,x2]
writedlm("temp.csv", A,BigFloat) #writing a CSV
readdlm("temp.csv", BigFloat) #Loading a CSV

```

Greetings,  
longemen3000

Edit: it only works with 1D arrays 😕 , but is something

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [March 22, 2019, 8:51pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/3 "2019-03-22T20:51:47Z")

</div>

[`serialize`](https://docs.julialang.org/en/v1/stdlib/Serialization/#Serialization.serialize) works:

```julia
julia> X = big.(rand(3,3))
3×3 Array{BigFloat,2}:
 0.555244 0.285951 0.531511
 0.469538 0.609854 0.577057
 0.977457 0.248332 0.0436916

julia> using Serialization

julia> serialize("X", X)

julia> deserialize("X")
3×3 Array{BigFloat,2}:
 0.555244 0.285951 0.531511
 0.469538 0.609854 0.577057
 0.977457 0.248332 0.0436916

```

---

<div class="post-metadata">

**Author:** ![GoodNews](https://avatars.discourse-cdn.com/v4/letter/g/f07891/32.png) [@GoodNews](https://discourse.julialang.org/u/GoodNews)\
**Post date:** [March 22, 2019, 9:49pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/5 "2019-03-22T21:49:53Z")

</div>

If I try this,

```julia
open("delim_file.csv", "w") do io
    serialize(io, sm)
    writedlm(io, sm)
end

open("delim_file.csv", "r") do io
    deserialize(io)
    readdlm(io, Double64)
end

```

I get the error from before:

```julia
at row 1, column 1 : UndefVarError(:isnothing)
error(::String) at error.jl:33
dlm_fill(::DataType, ::Array{Array{Int64,1},1}, ::Tuple{Int64,Int64}, ::Bool, ::String, ::Bool, ::Char) at DelimitedFiles.jl:514
readdlm_string(::String, ::Char, ::Type, ::Char, ::Bool, ::Dict{Symbol,Union{Char, Integer, Tuple{Integer,Integer}}}) at DelimitedFiles.jl:470
#readdlm_auto#8 at DelimitedFiles.jl:230 [inlined]
readdlm_auto at DelimitedFiles.jl:230 [inlined]
#readdlm#6 at DelimitedFiles.jl:225 [inlined]
readdlm at DelimitedFiles.jl:225 [inlined]
#readdlm#1 at DelimitedFiles.jl:57 [inlined]
readdlm at DelimitedFiles.jl:57 [inlined]
(::getfield(Main, Symbol("##103#104")))(::IOStream) at StreamUtility.jl:289
#open#294(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::getfield(Main, Symbol("##103#104")), ::String, ::Vararg{String,N} where N) at iostream.jl:369
open(::Function, ::String, ::String) at iostream.jl:367
top-level scope at none:0

```

Do I apply (de-)serialize here properly?

---

<div class="post-metadata">

**Author:** ![simonbyrne](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/simonbyrne/32/19_2.png) [@simonbyrne](https://discourse.julialang.org/u/simonbyrne)\
**Post date:** [March 22, 2019, 10:03pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/6 "2019-03-22T22:03:58Z")

</div>

No, you don’t need `writedlm`/`readdlm` if you’re using `serialize`/`deserialize`. My example above was writing/reading to a file named `X`.

---

<div class="post-metadata">

**Author:** ![GoodNews](https://avatars.discourse-cdn.com/v4/letter/g/f07891/32.png) [@GoodNews](https://discourse.julialang.org/u/GoodNews)\
**Post date:** [March 22, 2019, 11:59pm UTC](https://discourse.julialang.org/t/save-bigfloat-array-to-a-file/22210/7 "2019-03-22T23:59:47Z")

</div>

True, that’s perfect. Thanks!
