Ask Your Question
2

solve result contain variable which to solved

asked 2020-11-21 15:10:59 +0100

froli78 gravatar image

updated 2020-11-22 11:27:10 +0100

tmonteil gravatar image

Hi!

I'm newbie with Sage please help me what I'm doing wrong!

I do:

(a,l,x) = var('a,l,x')

solve(1/(a*(x-1))==(sqrt(x^2+1^2)/2/l),x)

--> [x == (sqrt(x^2 + 1)*a + 2*l)/(sqrt(x^2 + 1)*a)]

Why x result contain x itself!? It's not ture for any x.

If I set a,l params

a=24

l=1.28

solve(1/(a*(x-1))==(sqrt(x^2+1^2)/2/l),x)

--> [x == 1/75*(75*sqrt(x^2 + 1) + 8)/sqrt(x^2 + 1)]

So result still contain x itself... I'm confused about it.

Thanks for help.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2020-11-21 20:33:03 +0100

Emmanuel Charpentier gravatar image

This means that Sage's solve by itself does not find an explicit solution to this equation. Indeed:

sage: Eq = 1/(a*(x - 1)) == 1/2*sqrt(x^2 + 1)/l
sage: solve(Eq, x)
[x == (sqrt(x^2 + 1)*a + 2*l)/(sqrt(x^2 + 1)*a)]
sage: solve(Eq, x, to_poly_solve=True)
[]
sage: solve(Eq, x, to_poly_solve="force")
[]
sage: solve(Eq, x, algorithm="giac")
[x == (sqrt(x^2 + 1)*a + 2*l)/(sqrt(x^2 + 1)*a)]
sage: solve(Eq, x, algorithm="fricas")
[x == (sqrt(x^2 + 1)*a + 2*l)/(sqrt(x^2 + 1)*a)]

However, eliminating the radical (thus getting an equation in rational fractions) is easily solved :

sage: foo=(Eq^2).expand().solve(x)
sage: foo
[x == -1/2*sqrt(-2*sqrt(3)*a/sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3)) + 2/3*(12*l^2/a^2 - 1)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3) - 1/6*sqrt(3)*sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3))/a + 1/2, x == 1/2*sqrt(-2*sqrt(3)*a/sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3)) + 2/3*(12*l^2/a^2 - 1)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3) - 1/6*sqrt(3)*sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3))/a + 1/2, x == -1/2*sqrt(2*sqrt(3)*a/sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3)) + 2/3*(12*l^2/a^2 - 1)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3) + 1/6*sqrt(3)*sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3))/a + 1/2, x == 1/2*sqrt(2*sqrt(3)*a/sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3)) + 2/3*(12*l^2/a^2 - 1)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) - 2/3) + 1/6*sqrt(3)*sqrt((2*a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(2/3) - a^2*(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3) + 2*a^2 - 24*l^2)/(9*l^2/a^2 + 9*sqrt(2/3*a^4 - 13/3*a^2*l^2 + 64/3*l^4)*l/a^3 + 1)^(1/3))/a + 1/2]

However, by squaring the equation, we may have introduce spurious solutions ($a^2=b^2$ has ore solutions than $a=b$...). These solutions should therefore be checked before use ; my laziness leaves this as an exercise for the reader...

One can also get a solution via sympy :

sage: bar=solve(Eq, x, algorithm="sympy")

However, this solution is a sympy object (meaning that the"automatic" translation to sage objects is not (yet) implemented) :

sage: type(bar)
<class 'sympy.sets.sets.Complement'>

This is the difference of two sets. The second is trivial:

sage: bar.args[1]
FiniteSet(1)

The first is a set :

sage: type(bar.args[0])
<class 'sympy.sets.sets.FiniteSet'>
sage: len(bar.args[0].args)
4
sage: [type(u) for u in bar.args[0].args]

Furthermore, each of these 4 solutins is a (value, condition) pair :

[Piecewise, Piecewise, Piecewise, Piecewise]

Extracting the values of these solutions can be done by :

sage: [u.args[0][0]._sage_() for u in bar.args[0].args]
[-1/2*sqrt(2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 2/sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) - 2/3) - 1/2*sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) + 1/2,
 1/2*sqrt(2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 2/sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) - 2/3) - 1/2*sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) + 1/2,
 -1/2*sqrt(2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) + 2/sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) - 2/3) + 1/2*sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) + 1/2,
 1/2*sqrt(2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) + 2/sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) - 2/3) + 1/2*sqrt(-2/3*(1/2)^(1/3)*(9*(a^2 - 4*l^2)/a^2 - 13)^(1/3) - 1/3) + 1/2]

Again, unscrewing and translating the conditions is left as an exercise to the reader.

"The competition" also gives us a set of 4 solutions :

sage: %time bar=mathematica.Solve(Eq,x)
CPU times: user 62 µs, sys: 4 ms, total: 4.06 ms
Wall time: 38.5 ms
sage: bar
{
 {x -> 1/2 - Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) + 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2)]/2 - 
    Sqrt[-2/3 - (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) - 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2) - 
       2/Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/(3*a^2*
            (a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3)) + 
          (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3))/(3*a^2)]]/2}, 
 {x -> 1/2 - Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) + 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2)]/2 + 
    Sqrt[-2/3 - (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) - 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2) - 
       2/Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/(3*a^2*
            (a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3)) + 
          (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3))/(3*a^2)]]/2}, 
 {x -> 1/2 + Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) + 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2)]/2 - 
    Sqrt[-2/3 - (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) - 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2) + 
       2/Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/(3*a^2*
            (a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3)) + 
          (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3))/(3*a^2)]]/2}, 
 {x -> 1/2 + Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) + 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2)]/2 + 
    Sqrt[-2/3 - (2*(a^4 - 12*a^2*l^2))/
        (3*a^2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3)) - 
       (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
              64*a^6*l^6])^(1/3))/(3*a^2) + 
       2/Sqrt[-1/3 + (2*(a^4 - 12*a^2*l^2))/(3*a^2*
            (a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3)) + 
          (2*(a^6 + 9*a^4*l^2 + 3*Sqrt[3]*Sqrt[2*a^10*l^2 - 13*a^8*l^4 + 
                 64*a^6*l^6])^(1/3))/(3*a^2)]]/2}}

This is not (yet) automatically transcriptible in Sage, but can be manually translated :

sage: [{u[1][1].sage():u[1][2].sage()} for u in bar]
[{x: -1/2*sqrt(-2/sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) - 2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) - 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 2/3) - 1/2*sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) + 1/2},
 {x: 1/2*sqrt(-2/sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) - 2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) - 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 2/3) - 1/2*sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) + 1/2},
 {x: -1/2*sqrt(2/sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) - 2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) - 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 2/3) + 1/2*sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) + 1/2},
 {x: 1/2*sqrt(2/sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) - 2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) - 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 2/3) + 1/2*sqrt(2/3*(a^4 - 12*a^2*l^2)/((a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)*a^2) + 2/3*(a^6 + 9*a^4*l^2 + 3*sqrt(3)*sqrt(2*a^10*l^2 - 13*a^8*l^4 + 64*a^6*l^6))^(1/3)/a^2 - 1/3) + 1/2}]

Of course, checking that those solutions are equivalent is left as an exercise to the reader...

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2020-11-21 15:10:59 +0100

Seen: 182 times

Last updated: Nov 22 '20