Hey all, 

I have been trying to work on a fix for scalar multiplication of points on 
elliptic curves over finite fields. The issue at the moment is that when we 
multiply by a Sage type, such as an Integer, the coercion system discovers 
the action via `_acted_upon_` and a fast method via Pari is called.

However, when the scalar multiplication is called with a Python `int`, then 
this falls through to `IntegerMulAction` which instead performs the scalar 
multiplication using Sage defined addition and doubling which is much 
slower (about 10x slower by the timing I have in the PR).

My initial fix was to simply add a `__mul__` method for elliptic curve 
points, but through conversations with the reviewers of the PR, instead a 
fix was proposed within the `discover_action()` method, which attempts a 
precomposition from python `int` to Sage `Integer` which then allows for 
the discovery of the action for `_acted_upon_`.

This fix "worked" in that the action works fine for my elliptic curve 
example and the speed for `int` and `Integer` now are both fast, but the CI 
tests run and it seems my change has totally broken Sage.

I really want to do the correct fix here, but I don't understand how much 
change could have broken so much internally as I thought my fix would only 
discover good actions... I would really appreciate some support in finding 
the right solution for this.

A link to the PR is here: https://github.com/sagemath/sage/pull/37369

Thank you! 

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sage-devel/c9638664-e2a7-49fa-81fa-86d548d6f08fn%40googlegroups.com.

Reply via email to