Yes textbook answer is, why do you want to use `\`? Iterative techniques
are likely better suited for the problem. There's no need to roll you own,
the package IterativeSolvers.jl has a good number of techniques implemented
which are well-suited for the problem since A is a large sparse matrix.
Their methods should work out of the box with Bigs, though you will likely
want to adjust the tolerances.
On Wednesday, August 10, 2016 at 7:37:35 PM UTC-7, Ralph Smith wrote:
>
> Here is a textbook answer. Appropriate choice of n depends on condition
> of A.
>
> """
>
> iterimprove(A,b,n=1,verbose=true)
>
>
>
> Solve `A x = b` for `x` using iterative improvement
>
> """
>
> function iterimprove{T<:AbstractFloat}(A::SparseMatrixCSC{T},
>> b::Vector{T},n=1,verbose=true)
>>
> eps(T) < eps(Float64) || throw(ArgumentError("wrong implementation"))
>
> A0 = SparseMatrixCSC{Float64}(A)
>> F = factorize(A0)
>> x = zeros(b)
>> r = copy(b)
>> for iter = 1:n+1
>> y = F \ Vector{Float64}(r)
>> for i in eachindex(x)
>> x[i] += y[i]
>> end
>> r = b - A * x
>> if verbose
>> @printf "at iter %d resnorm = %.3g\n" iter norm(r)
>> end
>> end
>> x
>> end
>
>
>
> On Wednesday, August 10, 2016 at 3:47:10 PM UTC-4, Nicklas Andersen wrote:
>>
>> Hello
>>
>> I'm trying to solve a large, sparse and unsymmetrical linear system Ax =
>> b.
>> For this task I'm using Julias *SparseMatrixCSC *type for the definition
>> of my matrices and Julias built in backslash ' \ ' operator for the
>> solution of the system.
>> I need *quadruple precision* and thus I've been trying to implement my
>> routine with the *BigFloat *type together with the SparseMatrixCSC type.
>>
>> To illustrate this, I give a simple example here:
>> set_bigfloat_precision(128);
>> A = speye(BigFloat, 2, 2);
>> b = ones(BigFloat, 2, 1);
>> x = A\b;
>>
>> If I do this I either get a StackOverFlow error:
>> ERROR: StackOverflowError:
>> in copy at array.jl:100
>> in float at sparse/sparsematrix.jl:234
>> in call at essentials.jl:57 (repeats 254 times)
>>
>> or the solver seems to run forever and never terminates. As the second
>> error indicates it seems like the sparse solver only accepts the normal
>> *float* types.
>> My question is then, is there a way to get quadruple precision with the
>> standard solvers in Julia, in this case UMFpack I assume ? or should I look
>> for something else (in this case any suggestions :) ) ?
>>
>> Regards Nicklas A.
>>
>>