Opened 8 years ago

Last modified 6 years ago

#16664 needs_work enhancement

Add a finite field implementation using FLINT's fq and fq_nmod modules

Reported by: Jean-Pierre Flori Owned by:
Priority: major Milestone: sage-6.4
Component: finite rings Keywords: flint finite field
Cc: Luca De Feo, Peter Bruin, erousseau Merged in:
Authors: Jean-Pierre Flori Reviewers:
Report Upstream: N/A Work issues:
Branch: u/jpflori/flint_fq_nmod (Commits, GitHub, GitLab) Commit: 9587ba65d705fd9480d380908e31ba000565d676
Dependencies: #19646 Stopgaps:

Status badges

Description (last modified by Jean-Pierre Flori)

Implement finite fields using flint fq and fq_nmod types.

Change History (73)

comment:1 Changed 8 years ago by Jean-Pierre Flori

I've set up something at u/jpflori/flint_fq. Completely incomplete though.

comment:2 Changed 8 years ago by Jean-Pierre Flori

Branch: u/jpflori/flint_fq
Commit: 1ba3dbfd2f4700471bbf6eb86296d9f39451ee74

New commits:

1ba3dbfFirst draty implementation of finite fields using FLINT's fq module.

comment:3 Changed 8 years ago by Jean-Pierre Flori

Cc: Luca De Feo Peter Bruin added
Summary: Add a finite field implementation using FLINT's fq[_zech] moduleAdd a finite field implementation using FLINT's fq[_zech/_nmod] module

comment:4 Changed 8 years ago by git

Commit: 1ba3dbfd2f4700471bbf6eb86296d9f39451ee74fa877df7449b292bd63d09163ba308aa34036e7d

Branch pushed to git repo; I updated commit sha1. New commits:

95106baUse fq_inv function.
b83f88cMerge remote-tracking branch 'trac/develop' into flint_fq
fa877dfThe fq_div function does not exist in FLINT 2.4 branch.

comment:5 Changed 8 years ago by git

Commit: fa877df7449b292bd63d09163ba308aa34036e7dae3034c2d3254fe2c843bb7d26d682e47d7824ea

Branch pushed to git repo; I updated commit sha1. New commits:

ae3034cMake sure that the fq_ctx_t object is initialized when attempting to clean it.

comment:6 Changed 8 years ago by git

Commit: ae3034c2d3254fe2c843bb7d26d682e47d7824eac7990f8fb70f3c6d052d00c57fc09bd2716fe78d

Branch pushed to git repo; I updated commit sha1. New commits:

c7990f8Implement correct polynomial method for FiniteFieldElement_flint_fq.

comment:7 Changed 8 years ago by git

Commit: c7990f8fb70f3c6d052d00c57fc09bd2716fe78de9bfa5887be1c77dd1869d898f89af03c7f0479f

Branch pushed to git repo; I updated commit sha1. New commits:

986a850Let build finite field using flint via the GF constructor.
008a4c3Homogenize the representation of fq_t element.
e9bfa58Fix most tests for now GF flint implem.

comment:8 Changed 8 years ago by git

Commit: e9bfa5887be1c77dd1869d898f89af03c7f0479f4efb03a482b3ad3118876c75da52b1563a960415

Branch pushed to git repo; I updated commit sha1. New commits:

4efb03aFix comparison for gf flint implem.

comment:9 Changed 8 years ago by git

Commit: 4efb03a482b3ad3118876c75da52b1563a96041596d5d9db45a9d62d1777b0a6ae0b7e3d3d10840b

Branch pushed to git repo; I updated commit sha1. New commits:

96d5d9dFix return value of type for gf flint implem.

comment:10 Changed 8 years ago by git

Commit: 96d5d9db45a9d62d1777b0a6ae0b7e3d3d10840b4b8c871640d032621f41bd2bf7c324b9f67c6fd1

Branch pushed to git repo; I updated commit sha1. New commits:

92306aeConversion from PARI gen to GF Flint type.
e5bdf4cUpgrade to PARI-2.7.1
ab6bdffMerge remote-tracking branch 'trac/u/jdemeyer/ticket/15767' into flint_fq
4b8c871Fix conversion from pari to Flint implem of GF.

comment:11 Changed 8 years ago by git

Commit: 4b8c871640d032621f41bd2bf7c324b9f67c6fd19e9d2efc8a3c52ed963e36ecf448e2fe9207cd13

Branch pushed to git repo; I updated commit sha1. New commits:

9e9d2efFix for pari conversion of flint implem of GF.

comment:12 Changed 8 years ago by Jean-Pierre Flori

Dependencies: #15767
Description: modified (diff)
Status: newneeds_review
Summary: Add a finite field implementation using FLINT's fq[_zech/_nmod] moduleAdd a finite field implementation using FLINT's fq module

Not thouroughly tested but it at least passes its testsuite.

Comments welcome.

comment:13 Changed 8 years ago by Jean-Pierre Flori

I've also pushed another branch including an implem using the fq_nmod type at u/jpflori/flint_fq_nmod. Note that you'll need a FLINT version including my latest git commits from https://github.com/jpflori/flint2 At least now, FLINT seems to provide implementation faster than PARI for basic arithmetic over all ranges.

Doing the same thing for the fq_zech type should be as easy as for the fq_nmod type. But there is so much code duplication that it should definitely be templated (that should already be done for the fq and fq_nmod types alone). And not sure that the fq_zech type will be so useful as we have Givaro.

comment:14 Changed 8 years ago by Jean-Pierre Flori

Authors: Jean-Pierre Flori
Branch: u/jpflori/flint_fqu/jpflori/flint_fq_nmod
Commit: 9e9d2efc8a3c52ed963e36ecf448e2fe9207cd13b2021706d46596756ff50faaef67bdafda42b7ef
Description: modified (diff)
Summary: Add a finite field implementation using FLINT's fq moduleAdd a finite field implementation using FLINT's fq and fq_nmod modules

Still depends on git version of FLINT, my changes are now merged upstream.


New commits:

5d119abMerge remote-tracking branch 'trac/develop' into flint_fq
586fc84Add GF implem using fq_nmod FLINT type.
b202170Only use pxd files for FLINT includes.

comment:15 Changed 8 years ago by Jean-Pierre Flori

I'll do the templating stuff in a later tickets. It really needs more thoughts than what I already did here, especially if I want to convert some other implementations to it.

comment:16 Changed 8 years ago by For batch modifications

Milestone: sage-6.3sage-6.4

comment:17 Changed 8 years ago by git

Commit: b2021706d46596756ff50faaef67bdafda42b7ef5eaa6bbcc00f4d8273d4b7ca4b7be309da8002a3

Branch pushed to git repo; I updated commit sha1. New commits:

9bc2cafInitial fix for conversion from pari to flint for ff.
5eaa6bbMerge branch 'ticket/16664' into flint_fq

comment:18 Changed 8 years ago by git

Commit: 5eaa6bbcc00f4d8273d4b7ca4b7be309da8002a380079e426c92a207966a260219573a212e69cdf3

Branch pushed to git repo; I updated commit sha1. New commits:

24138ebMove square root functions for finite fields to base class.
ced21cfUse correct name for variable in pari implem of ffs.
80079e4Fix conversion from flint to pari ffs elements.

comment:19 Changed 8 years ago by git

Commit: 80079e426c92a207966a260219573a212e69cdf3bc8168002652630cdfd760a2317e8f23068b98bd

Branch pushed to git repo; I updated commit sha1. New commits:

eedb413Port fixes for flint_fq implem of ffs to flint_fq_nmod implem.
bc81680Faster square root for generic finite field implem.

comment:20 Changed 8 years ago by git

Commit: bc8168002652630cdfd760a2317e8f23068b98bd0661730ac7103071624b93cbee8ba22a1ed81c58

Branch pushed to git repo; I updated commit sha1. New commits:

0661730Produce different (and non-zero...) hashes for FLINT implems of FFs.

comment:21 Changed 8 years ago by git

Commit: 0661730ac7103071624b93cbee8ba22a1ed81c5816243d1af505576bb260aee467c8b80b5cbb0921

Branch pushed to git repo; I updated commit sha1. New commits:

16243d1Fix comparison for FLINT implems of FFs.

comment:22 Changed 8 years ago by git

Commit: 16243d1af505576bb260aee467c8b80b5cbb0921de8d00fae0ea6040ce69e69f76fdbe4ff60df03d

Branch pushed to git repo; I updated commit sha1. New commits:

fe5bce1Give a little more info in pxd files about flint fq structure.
de8d00fMerge remote-tracking branch 'trac/develop' into flint_fq_nmod

comment:23 Changed 8 years ago by git

Commit: de8d00fae0ea6040ce69e69f76fdbe4ff60df03db4fa9ea343e1cdd141918193a358f05608d27c67

Branch pushed to git repo; I updated commit sha1. New commits:

b4fa9eaFix for FFs implem using flint fq_nmod module.

comment:24 Changed 8 years ago by Jeroen Demeyer

Status: needs_reviewneeds_work

Needs to be merged.

comment:25 Changed 8 years ago by git

Commit: b4fa9ea343e1cdd141918193a358f05608d27c67dfef37bb379c05d3dc35b347c40aa081eaf7fb4c

Branch pushed to git repo; I updated commit sha1. New commits:

dfef37bA little more info for fmpz_poly struct.

comment:26 Changed 8 years ago by git

Commit: dfef37bb379c05d3dc35b347c40aa081eaf7fb4cea72beba1a744f569b26e9157f644d9e59682da7

Branch pushed to git repo; I updated commit sha1. New commits:

ea72bebMerge remote-tracking branch 'trac/develop' into flint_fq_nmod

comment:27 Changed 8 years ago by Jean-Pierre Flori

Should merge cleanly now.

Still needs a git version of FLINT though.

comment:28 Changed 8 years ago by git

Commit: ea72beba1a744f569b26e9157f644d9e59682da7ef5c3384da2ee07672bd5863872b329e43fa9104

Branch pushed to git repo; I updated commit sha1. New commits:

72dbde0Merge remote-tracking branch 'trac/develop' into flint_fq_nmod
fff00d4Cleanup/reorganization of FLINT imports
07780b1Merge remote-tracking branch 'trac/u/jdemeyer/ticket/16428' into flint_fq_nmod
ce22602Cleanup/reorganization of FLINT imports
ef5c338Merge remote-tracking branch 'trac/u/jdemeyer/ticket/16428' into flint_fq_nmod

comment:29 Changed 8 years ago by Jeroen Demeyer

Could you please explicitly list in "Dependencies" the tickets which are merged in this branch? I'm a bit lost in the git forest.

comment:30 Changed 8 years ago by Jeroen Demeyer

I don't really like the fact that element_flint_fq_nmod.pyx and element_flint_fq.pyx are almost identical. Wouldn't it make sense to implement a common base class for them or use templating techniques?

comment:31 Changed 8 years ago by Jeroen Demeyer

Also, be aware of #16983 and #16855 which could potentially conflict.

comment:32 Changed 8 years ago by Jean-Pierre Flori

This is really work in progress, so it's not really ready for review. I thought very hard of templating but it was too much work for the time I had. Note that the pari_ffelt class at least (and maybe the pari_mod one) is also very similar, so the templating/common base class should surely cover a wider area.

I'll fill in the dependencies asap.

comment:33 in reply to:  32 Changed 8 years ago by Jeroen Demeyer

Replying to jpflori:

This is really work in progress, so it's not really ready for review.

Sure, I just wanted to give some comments based on a first glance.

comment:34 in reply to:  32 Changed 8 years ago by Jeroen Demeyer

Replying to jpflori:

Note that the pari_ffelt class at least (and maybe the pari_mod one) is also very similar, so the templating/common base class should surely cover a wider area.

Perhaps. I noticed you moved some functions to element_base.pyx in your branch, could that be made into a separate ticket?

comment:35 Changed 8 years ago by Jean-Pierre Flori

Ok, I'll try to do that (because I do agree it would be the good way to go and feel guilty about my dirty commits). There are also some other things related to the PARI FF implem that I'll try to move out of this ticket.

comment:36 Changed 8 years ago by git

Commit: ef5c3384da2ee07672bd5863872b329e43fa91043fb1b2c7a379d21a377470049637ee0b26f221ea

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

1607b8fMerge remote-tracking branch 'origin/develop' into ticket/15015
7725122Cosmetic changes
6957f17Merge remote-tracking branch 'origin/develop' into ticket/15015
aca71cbUpgrade to mpir-2.7.0-alpha12
67babebFix doctests due to changed xgcd results
8c7fbbdRe-enable "not tested" test from #4357
08fdc35Merge remote-tracking branch 'trac/u/jdemeyer/ticket/15015' into mpir
2cd2132Merge branch 'flint_pxd' into flint_fq_nmod
ab4e114Use flint long types.
3fb1b2cAvoid conversion from long to integer when building flint ff element.

comment:37 Changed 8 years ago by Jean-Pierre Flori

Dependencies: #15767#15767, #17165

comment:38 Changed 8 years ago by Jean-Pierre Flori

Groumpf, I accidently merged #17148 and #15015 into this one... Not really a problem as we'll probably have to wait for a proper FLINT 2.5 for this one, and that should come after the actual MPIR 2.7.0 release.

comment:39 Changed 8 years ago by git

Commit: 3fb1b2c7a379d21a377470049637ee0b26f221ea63657757e4a1a72fbfa827f3eb48301f88cd8ee6

Branch pushed to git repo; I updated commit sha1. New commits:

6365775Use FLINT long types for FF classes.

comment:40 Changed 8 years ago by git

Commit: 63657757e4a1a72fbfa827f3eb48301f88cd8ee6a6649d20a035ece47107b152b91e4c06ab9dae3e

Branch pushed to git repo; I updated commit sha1. New commits:

70df924Refactor some methods for finite fields elements.
6ffc64dCleanup unused code and move doctests for finite field elements.
a6649d2Merge branch 'ticket/17165' into flint_fq_nmod

comment:41 Changed 8 years ago by git

Commit: a6649d20a035ece47107b152b91e4c06ab9dae3ebb465ee801dc2dd650c4c215a0840085476cb1ba

Branch pushed to git repo; I updated commit sha1. New commits:

c21dbbcMerge remote-tracking branch 'trac/develop' into flint_fq_nmod
bb465eeProper memory allocation for FLINT FF's modules.

comment:42 Changed 8 years ago by git

Commit: bb465ee801dc2dd650c4c215a0840085476cb1ba55ef7dfcc3190f574a833c7c5f8587a6c25886b8

Branch pushed to git repo; I updated commit sha1. New commits:

0aed331Make modular exponentiation of polynomial using FLINT interruptable.
ef28e27Better fix for exponentiation of polys using FLINT nmod and test.
2bf519bMerge branch 'ticket/17470' into flint_fq_nmod
55ef7dfSimplify FLINT C types use.

comment:43 Changed 8 years ago by Jeroen Demeyer

Dependencies: #15767, #17165???

comment:44 Changed 8 years ago by Jeroen Demeyer

Dependencies: ???#15015, #17470 ???

comment:45 Changed 8 years ago by Jean-Pierre Flori

Dependencies: #15015, #17470 ???#15015, #17470

I guess the dependencies are correct now.

Apart from bug fixing and heavy testing, the real question is whether I should try to make some code factoring/templating now.

comment:46 Changed 8 years ago by git

Commit: 55ef7dfcc3190f574a833c7c5f8587a6c25886b807105b7292261e537ee3e23f62d15860aeaf4ab5

Branch pushed to git repo; I updated commit sha1. New commits:

53db8ccMerge branch 'ticket/17470' into flint_fq_nmod
07105b7Merge remote-tracking branch 'trac/develop' into flint_fq_nmod

comment:47 Changed 8 years ago by git

Commit: 07105b7292261e537ee3e23f62d15860aeaf4ab576513171cd0217c216bed2bb3be6d89ee7c12e5a

Branch pushed to git repo; I updated commit sha1. New commits:

08d4719Merge branch 'ticket/17165' into flint_fq_nmod
dcec4b9Merge branch 'ticket/17165' into flint_fq_nmod
44b6b40Merge remote-tracking branch 'trac/develop' into flint_fq_nmod
7651317Merge remote-tracking branch 'trac/u/jpflori/flint_fq_nmod' into flint_fq_nmod

comment:48 Changed 8 years ago by Jean-Pierre Flori

Status: needs_workneeds_review

comment:49 Changed 8 years ago by Jeroen Demeyer

Like I said before, I still don't like that the fq files are almost identical to the fq_nmod files.

And instead of writing comments like

# JPF: the following should definitely go into element_base.pyx.

just do it (on a different ticket please, same for def rational_reconstruction

comment:50 Changed 8 years ago by git

Commit: 76513171cd0217c216bed2bb3be6d89ee7c12e5a2ef5f6bb5ddd910d30d707f50c4e76bdbe4d107e

Branch pushed to git repo; I updated commit sha1. New commits:

2ef5f6bRemove rational reconstruction code from FF base class.

comment:51 Changed 8 years ago by Jean-Pierre Flori

Status: needs_reviewneeds_work
Work issues: rebasing

comment:52 Changed 8 years ago by git

Commit: 2ef5f6bb5ddd910d30d707f50c4e76bdbe4d107ea6d7614c0fd0dc5b31ed307e86b6edeb3f167d9c

Branch pushed to git repo; I updated commit sha1. New commits:

a6d7614Fix _cmp_ and cdefs.pxi for flint FF implem.

comment:53 Changed 8 years ago by Jean-Pierre Flori

Status: needs_workneeds_review
Work issues: rebasing

comment:54 Changed 7 years ago by git

Commit: a6d7614c0fd0dc5b31ed307e86b6edeb3f167d9c83e71947185a138af370142c42ee56bdcc6c1f73

Branch pushed to git repo; I updated commit sha1. New commits:

83e7194Merge branch 'develop' into flint_fq_nmod

comment:55 Changed 7 years ago by Jean-Pierre Flori

@Jeroen: where would you put the distutils magic to simplify linking with flint? In only one pxd file in src/sage/libs/flint which is included by all other ones? Or in each of them?

comment:56 in reply to:  55 ; Changed 7 years ago by Jeroen Demeyer

Replying to jpflori:

@Jeroen: where would you put the distutils magic to simplify linking with flint? In only one pxd file in src/sage/libs/flint which is included by all other ones? Or in each of them?

First of all, I would prefer to move all changes to libs/flint to a different ticket.

If you want distutils magic, I would put it in every .pxd file which defines library functions (in practice, this is probably all of them except types.pxd).

Note #18837 which makes FLINT-related changes to module_list.py. The new ticket should probably depend on #18837.

comment:57 Changed 7 years ago by Jeroen Demeyer

Another small comment: you can replace

    ctypedef struct X:
        pass

by

    ctypedef struct X

comment:58 Changed 7 years ago by git

Commit: 83e71947185a138af370142c42ee56bdcc6c1f73f5e05a4c15655a5590f0f3684a4d4fb340418610

Branch pushed to git repo; I updated commit sha1. New commits:

d597b9aMerge remote-tracking branch 'trac/develop' into flint_fq_nmod
4b08519Metaclass for inheriting comparison functions
ac96e64Merge branch 'develop' into t/18329/ticket/18329
0e0301aFix documentation
f6058e7Use sage_getfile instead of inspect.getfile
54ff301Merge remote-tracking branch 'trac/u/jdemeyer/ticket/18329' into flint_fq_nmod
f5e05a4Remove comparison boilerplate.

comment:59 Changed 7 years ago by git

Commit: f5e05a4c15655a5590f0f3684a4d4fb340418610822513dd822a392bd6fd20a6d3369be63a503e35

Branch pushed to git repo; I updated commit sha1. New commits:

ac28f6cLet FLINT 2.4.5 pretty print fq_nmod elements.
a62af73Add FLINT fix for buggy fq_nmod traces.
822513dFix tests for latest Sage dev version.

comment:60 in reply to:  56 ; Changed 7 years ago by Jean-Pierre Flori

Replying to jdemeyer:

Replying to jpflori:

@Jeroen: where would you put the distutils magic to simplify linking with flint? In only one pxd file in src/sage/libs/flint which is included by all other ones? Or in each of them?

First of all, I would prefer to move all changes to libs/flint to a different ticket.

I only add new files needed by this ticket, I'm not sure it would make sense to add these files in another ticket.

comment:61 Changed 7 years ago by Jean-Pierre Flori

Ok, there is also a slight modification to types.h.

comment:62 in reply to:  57 Changed 7 years ago by Jean-Pierre Flori

Replying to jdemeyer:

Another small comment: you can replace

    ctypedef struct X:
        pass

by

    ctypedef struct X

Noted. Note though that the other types in types.h use the syntax with pass. So I'm not sure if we should not modify all of them at once later.

comment:63 Changed 7 years ago by git

Commit: 822513dd822a392bd6fd20a6d3369be63a503e359587ba65d705fd9480d380908e31ba000565d676

Branch pushed to git repo; I updated commit sha1. New commits:

9587ba6Merge remote-tracking branch 'trac/develop' into flint_fq_nmod

comment:64 in reply to:  60 ; Changed 7 years ago by Jeroen Demeyer

Replying to jpflori:

I only add new files needed by this ticket, I'm not sure it would make sense to add these files in another ticket.

But you were talking about adding # distutils: libraries = flint, weren't you? I would suggest to do this on a new ticket. So, when you're changing libs/flint anyway, you might as well add the new files too.

comment:65 in reply to:  64 Changed 7 years ago by Jean-Pierre Flori

Replying to jdemeyer:

Replying to jpflori:

I only add new files needed by this ticket, I'm not sure it would make sense to add these files in another ticket.

But you were talking about adding # distutils: libraries = flint, weren't you? I would suggest to do this on a new ticket. So, when you're changing libs/flint anyway, you might as well add the new files too.

Oh yes, the distutils part should definitely be done elsewhere.

comment:66 Changed 7 years ago by Vincent Delecroix

Hello,

In _element_constructor_ the following case should not happen

if isinstance(x, self.element_class) and x.parent() is self:

as if parent(x) is self then this is catched by the __call__ of Parent. See line 1080-1083 of parent.pyx

        cdef R = parent_c(x) 
        cdef bint no_extra_args = len(args) == 0 and len(kwds) == 0 
        if R is self and no_extra_args: 
            return x

Instead of making __nonzero__ relies on is_unit I would rather implement __nonzero__ and call it in bot is_unit and is_zero. BTW for the latter this is what is in Element.is_zero by default, so you can even remove it. The reason why is that there is a special slot for __nonzero__ in Python objects. So the fastest (Python) way to do things should be

if not my_element:
    XYZ

and not

if my_element.is_zero():
    XYZ

What are the status of the flint patches? Are there incorporated in flint-2.5? If that is so, it would make sense to first include it into Sage.

Vincent

comment:67 in reply to:  66 ; Changed 7 years ago by Jean-Pierre Flori

Replying to vdelecroix:

Hello,

In _element_constructor_ the following case should not happen

if isinstance(x, self.element_class) and x.parent() is self:

as if parent(x) is self then this is catched by the __call__ of Parent. See line 1080-1083 of parent.pyx

        cdef R = parent_c(x) 
        cdef bint no_extra_args = len(args) == 0 and len(kwds) == 0 
        if R is self and no_extra_args: 
            return x

Instead of making __nonzero__ relies on is_unit I would rather implement __nonzero__ and call it in bot is_unit and is_zero. BTW for the latter this is what is in Element.is_zero by default, so you can even remove it. The reason why is that there is a special slot for __nonzero__ in Python objects. So the fastest (Python) way to do things should be

if not my_element:
    XYZ

and not

if my_element.is_zero():
    XYZ

Thanks, I'll have a look at both of these. Not that the code is mainly cpoied/pasted from the PARI wrapper by Peter Bruin. I'll also check the PARI wrapper. Note the PARI wrapper is Python rather than Cython (as we have already have a cython "proxy" for PARI elements).

What are the status of the flint patches? Are there incorporated in flint-2.5? If that is so, it would make sense to first include it into Sage.

I guess so. Integrating flint 2.5 first is a good idea anyway. It will also allow to use the lacking in flint 2.4 fq_div function.

Vincent

comment:68 in reply to:  67 Changed 7 years ago by Vincent Delecroix

Replying to jpflori:

Replying to vdelecroix:

What are the status of the flint patches? Are there incorporated in flint-2.5? If that is so, it would make sense to first include it into Sage.

I guess so. Integrating flint 2.5 first is a good idea anyway. It will also allow to use the lacking in flint 2.4 fq_div function.

This is #19009 (needs review).

comment:69 Changed 7 years ago by Vincent Delecroix

Status: needs_reviewneeds_work

Conflicts with the flint upgrade (#19009).

comment:70 Changed 7 years ago by Jeroen Demeyer

Dependencies: #15015, #17470#19646

comment:71 Changed 7 years ago by Jeroen Demeyer

Conflicts with 6.10.beta6. If you fix this conflict, I can easily merge #19646.

comment:72 Changed 6 years ago by erousseau

Cc: erousseau added

comment:73 Changed 6 years ago by Jean-Pierre Flori

I guess the branch here is now completely broken. A more current implementation can be found at https://github.com/defeo/ffisom/

Last edited 6 years ago by Jean-Pierre Flori (previous) (diff)
Note: See TracTickets for help on using tickets.