Changeset f43a74 in git for Singular/ipconv.cc


Ignore:
Timestamp:
May 18, 2005, 5:59:37 PM (19 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
42f5a8bf6b4c7bed01fc4375213acbce2abcfe04
Parents:
b340969c053d9f828187f38bac97b1feb96e654e
Message:
*hannes: new lib: sheafcohom.lib
         weight stuff
         load stuff


git-svn-id: file:///usr/local/Singular/svn/trunk@8220 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/ipconv.cc

    rb34096 rf43a74  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: ipconv.cc,v 1.26 2002-06-03 12:14:27 Singular Exp $ */
     4/* $Id: ipconv.cc,v 1.27 2005-05-18 15:59:35 Singular Exp $ */
    55/*
    66* ABSTRACT: automatic type conversions
     
    2020#include "silink.h"
    2121#include "syz.h"
     22#include "attrib.h"
    2223#include "ipconv.h"
    2324
    2425typedef void *   (*iiConvertProc)(void * data);
     26typedef void    (*iiConvertProcL)(leftv out,leftv in);
    2527struct sConvertTypes
    2628{
     
    2830  int o_typ;
    2931  iiConvertProc p;
     32  iiConvertProcL pl;
    3033};
    3134
     
    179182}
    180183
     184/*
    181185static void * iiR2L(void * data)
    182186{
    183187  syStrategy tmp=(syStrategy)data;
    184188  return  (void *)syConvRes(tmp,TRUE);
     189}
     190*/
     191static void iiR2L_l(leftv out, leftv in)
     192{
     193  int add_row_shift = 0;
     194  intvec *weights=(intvec*)atGet(in,"isHomog",INTVEC_CMD);
     195  if (weights!=NULL)  add_row_shift=weights->min_in();
     196
     197  syStrategy tmp=(syStrategy)in->CopyD();
     198  out->data=(void *)syConvRes(tmp,TRUE,add_row_shift);
    185199}
    186200
     
    197211//   input type       output type     convert procedure
    198212//  int -> number
    199    { INT_CMD,         NUMBER_CMD,     iiI2N },
     213   { INT_CMD,         NUMBER_CMD,     iiI2N , NULL },
    200214//  int -> poly
    201    { INT_CMD,         POLY_CMD,       iiI2P },
     215   { INT_CMD,         POLY_CMD,       iiI2P , NULL },
    202216//  int -> vector
    203    { INT_CMD,         VECTOR_CMD,     iiI2V },
     217   { INT_CMD,         VECTOR_CMD,     iiI2V , NULL },
    204218//  int -> ideal
    205    { INT_CMD,         IDEAL_CMD,      iiI2Id },
     219   { INT_CMD,         IDEAL_CMD,      iiI2Id , NULL },
    206220//  int -> matrix
    207    { INT_CMD,         MATRIX_CMD,     iiI2Id },
     221   { INT_CMD,         MATRIX_CMD,     iiI2Id , NULL },
    208222//  int -> intvec
    209    { INT_CMD,         INTVEC_CMD,     iiI2Iv },
     223   { INT_CMD,         INTVEC_CMD,     iiI2Iv , NULL },
    210224//  intvec -> intmat
    211    { INTVEC_CMD,      INTMAT_CMD,     iiDummy},
     225   { INTVEC_CMD,      INTMAT_CMD,     iiDummy, NULL },
    212226//  intvec -> matrix
    213    { INTVEC_CMD,      MATRIX_CMD,     iiIm2Ma },
     227   { INTVEC_CMD,      MATRIX_CMD,     iiIm2Ma , NULL },
    214228//  intmat -> matrix
    215    { INTMAT_CMD,      MATRIX_CMD,     iiIm2Ma },
     229   { INTMAT_CMD,      MATRIX_CMD,     iiIm2Ma , NULL },
    216230//  number -> poly
    217    { NUMBER_CMD,      POLY_CMD,       iiN2P  },
     231   { NUMBER_CMD,      POLY_CMD,       iiN2P  , NULL },
    218232//  number -> matrix
    219    { NUMBER_CMD,      MATRIX_CMD,     iiN2Ma  },
     233   { NUMBER_CMD,      MATRIX_CMD,     iiN2Ma  , NULL },
    220234//  number -> ideal
    221235//  number -> vector
     
    223237//  poly -> number
    224238//  poly -> ideal
    225    { POLY_CMD,        IDEAL_CMD,      iiP2Id },
     239   { POLY_CMD,        IDEAL_CMD,      iiP2Id , NULL },
    226240//  poly -> vector
    227    { POLY_CMD,        VECTOR_CMD,     iiP2V },
     241   { POLY_CMD,        VECTOR_CMD,     iiP2V , NULL },
    228242//  poly -> matrix
    229    { POLY_CMD,        MATRIX_CMD,     iiP2Id },
     243   { POLY_CMD,        MATRIX_CMD,     iiP2Id , NULL },
    230244//  vector -> module
    231    { VECTOR_CMD,      MODUL_CMD,      iiP2Id },
     245   { VECTOR_CMD,      MODUL_CMD,      iiP2Id , NULL },
    232246//  vector -> matrix
    233    { VECTOR_CMD,      MATRIX_CMD,     iiV2Ma },
     247   { VECTOR_CMD,      MATRIX_CMD,     iiV2Ma , NULL },
    234248//  ideal -> module
    235    { IDEAL_CMD,       MODUL_CMD,      iiMa2Mo },
     249   { IDEAL_CMD,       MODUL_CMD,      iiMa2Mo , NULL },
    236250//  ideal -> matrix
    237    { IDEAL_CMD,       MATRIX_CMD,     iiDummy },
     251   { IDEAL_CMD,       MATRIX_CMD,     iiDummy , NULL },
    238252//  module -> matrix
    239    { MODUL_CMD,       MATRIX_CMD,     iiMo2Ma },
     253   { MODUL_CMD,       MATRIX_CMD,     iiMo2Ma , NULL },
    240254//  matrix -> ideal
    241255//  matrix -> module
    242    { MATRIX_CMD,      MODUL_CMD,      iiMa2Mo },
     256   { MATRIX_CMD,      MODUL_CMD,      iiMa2Mo , NULL },
    243257//  intvec
    244258//  link
    245    { STRING_CMD,      LINK_CMD,       iiS2Link },
     259   { STRING_CMD,      LINK_CMD,       iiS2Link , NULL },
    246260// resolution -> list
    247    { RESOLUTION_CMD,  LIST_CMD,       iiR2L },
     261   { RESOLUTION_CMD,  LIST_CMD,       NULL /*iiR2L*/ , iiR2L_l },
    248262// list -> resolution
    249    { LIST_CMD,        RESOLUTION_CMD, iiL2R },
     263   { LIST_CMD,        RESOLUTION_CMD, iiL2R , NULL },
    250264//  end of list
    251    { 0,               0,              NULL }
     265   { 0,               0,              NULL , NULL }
    252266};
    253267
     
    338352        return TRUE;
    339353      output->rtyp=outputType;
    340       output->data=dConvertTypes[index].p(input->CopyD());
     354      if (dConvertTypes[index].p!=NULL)
     355      {
     356        output->data=dConvertTypes[index].p(input->CopyD());
     357      }
     358      else
     359      {
     360        dConvertTypes[index].pl(output,input);
     361      }
    341362      if ((output->data==NULL)
    342363      && ((outputType==IDEAL_CMD)
    343364        ||(outputType==MODUL_CMD)
    344365        ||(outputType==MATRIX_CMD)
     366        ||(outputType==INTMAT_CMD)
    345367        ||(outputType==INTVEC_CMD)))
    346368      {
Note: See TracChangeset for help on using the changeset viewer.