Vector Functions

using ArbNumerics, LinearAlgebra

  • dot
  • .+, .-, .*, ./ ( element op element )

Matrix Functions

using ArbNumerics, GenericLinearAlgebra, LinearAlgebra

  • det, tr

  • transpose, adjoint, inv

  • exp

  • .+, .-, .*, ./ ( element op element )

  • +, -, *, /, \ ( matrix op matrix )

  • lu, qr, factorize


Performance

With the working precision at 128 bits, and 100x100 element matrices, 13x (24x, 32x with 8 cores)

using BenchmarkTools

setprecision(BigFloat, workingprecision(ArbFloat))
128

n = 100;

bf = rand(BigFloat, n, n);
af = rand(ArbFloat, n, n);
ar = rand(ArbReal, n, n);

@btime $bf * $bf;
  158.920 ms (4080002 allocations: 186.84 MiB)

@btime $af * $af;
  12.027 ms (40011 allocations: 2.44 MiB)
  
@btime $af * $af; # 8 cores available
   6.611 ms (40011 allocations: 2.44 MiB)

@btime $ar * $ar; # 8 cores available
  4.881 ms (10006 allocations: 703.41 KiB)

With the working precision at 128 bits, increasing n from 100 to 250, 18x (35x, 44x with 8 cores)

@btime $bf * $bf;
  2.905 s (63000002 allocations: 2.82 GiB)

@btime $af * $af;
  156.604 ms (250011 allocations: 15.26 MiB)
  
@btime $af * $af; # 8 cores available
  80.941 ms (250011 allocations: 15.26 MiB)

@btime $ar * $ar; # 8 cores available
  65.392 ms (62506 allocations: 4.29 MiB)

as the working precision increases, they narrow – e.g. with precision of 512 bits and n=100, 3x (9x, 11x with 8 cores)

@btime $bf * $bf;
  247.357 ms (4080002 allocations: 280.23 MiB)

@btime $af * $af;
  75.515 ms (40013 allocations: 2.44 MiB)

@btime $af * $af; # 8 cores available
  25.473 ms (40013 allocations: 2.44 MiB)

@btime $ar * $ar; # 8 cores available
  21.264 ms (10008 allocations: 703.44 KiB)

as n increases they widen – e.g. with precision of 512 bits and n=250, 7x (9x, 12x with 8 cores)

@btime $bf * $bf;
   4.311 s (63000002 allocations: 4.22 GiB)

@btime $af * $af;
  606.713 ms (250013 allocations: 15.26 MiB)
  
@btime $af * $af; # 8 cores available
  457.125 ms (250013 allocations: 15.26 MiB)

@btime $ar * $ar; # 8 cores available
  333.056 ms (62508 allocations: 4.29 MiB)