Opened 3 years ago

Last modified 3 years ago

#21341 closed enhancement

Better wrapping of IML — at Version 6

Reported by: Bouillaguet Owned by:
Priority: major Milestone: sage-7.4
Component: interfaces Keywords: sd75
Cc: cpernet Merged in:
Authors: Reviewers:
Report Upstream: Reported upstream. No feedback yet. Work issues:
Branch: u/Bouillaguet/iml_wrapper (Commits) Commit: 574b4389929f9a444362e88894aff95432cb913c
Dependencies: Stopgaps:

Description (last modified by jdemeyer)

The IML package should be better wrapped up, for instance in sage/libs/IML. The cdef are hidden in sage/matrix/matrix_integer_dense.pyx.

The problem is that IML conflicts with linbox because of this in local/include/linbox/util/iml_wrapper.h:

namespace IML {
    extern "C" {
#include "iml.h"
    }
}

For instance, adding :

cdef extern from "linbox/solutions/solve.h" namespace "LinBox":
     pass

on top of sage/matrix/matrix_integer_dense.pyx prevents it from compiling.

Change History (6)

comment:1 Changed 3 years ago by Bouillaguet

  • Description modified (diff)
  • Keywords sd75 added

comment:2 Changed 3 years ago by Bouillaguet

  • Description modified (diff)

comment:3 Changed 3 years ago by Bouillaguet

  • Branch set to u/Bouillaguet/iml_wrapper

comment:4 Changed 3 years ago by Bouillaguet

  • Commit set to 574b4389929f9a444362e88894aff95432cb913c
  • Status changed from new to needs_review

New commits:

574b438move access to IML code into sage.libs.iml

comment:5 Changed 3 years ago by jdemeyer

  • Status changed from needs_review to needs_work

What is the point of this:

cdef long iml_nullspaceMP(long n, long m, const mpz_t *A, mpz_t * *mp_N_pass):
    return nullspaceMP(n, m, A, mp_N_pass)

cdef iml_nonsingSolvLlhsMM(SOLU_POS solupos, long n, long m, mpz_t *mp_A, mpz_t *mp_B, mpz_t mp_N, mpz_t mp_D):
    nonsingSolvLlhsMM(solupos, n, m, mp_A, mp_B, mp_N, mp_D)

Why not just call the IML functions directly?

If it's related to the problem in the ticket description, I'd rather try to fix that problem or at least understand why it does not work.

comment:6 Changed 3 years ago by jdemeyer

  • Description modified (diff)
Note: See TracTickets for help on using tickets.