/* MA1NOP.f -- translated by f2c (version 19960827).
   You must link the resulting object file with the libraries:
	-lf2c -lm   (in that order)
*/

#include "Data_f2c.h"

/* Subroutine */ int mma1nop_(nbroot, rootlg, uvfonc, isofav, ttable, iercod)
integer *nbroot;
doublereal *rootlg, *uvfonc;
integer *isofav;
doublereal *ttable;
integer *iercod;
{
    /* System generated locals */
    integer i__1;

    /* Local variables */
    static doublereal alinu, blinu, alinv, blinv;
    static integer ii, ibb;
    extern integer mnfndeb_();
    extern /* Subroutine */ int maermsg_(), mgenmsg_(), mgsomsg_();



/* < */
/* **NOTICE */
/*  THIS SOFTWARE IS THE PROPERTY OF CISIGRAPH. */
/*  THIS CODE MUST NOT BE DISTRIBUTED OR COPIED WITHOUT THE PRIOR */
/*  WRITTEN PERMISSION OF CISIGRAPH AND IS ONLY TO BE USED ON THE */
/*  SITE WHERE IT IS INSTALLED BY CISIGRAPH */
/* **NOTICE */

/* ***********************************************************************
 */

/*     FONCTION : */
/*     ---------- */
/*     Normalisation de parametres d'une iso, a partir du pave */
/*     parametrique et des parametres sur (-1,1). */

/*     MOTS CLES : */
/*     ----------- */
/*      TOUS,AB_SPECIFI :: ISO&,POINT&,NORMALISATION,&POINT,&ISO */

/*     ARGUMENTS D'ENTREE : */
/*     -------------------- */
/*        NBROOT: Nbre de pts de discretisation INTERIEURS a l'iso */
/*                definie sur (-1,1). */
/*        ROOTLG: Table des parametres de discretisation sur )-1,1( */
/*                de l'iso. */
/*        UVFONC: Pave de definition de l'iso */
/*        ISOFAV: = 1, c'est une iso-u; =2, c'est une iso-v. */

/*     ARGUMENTS DE SORTIE : */
/*     --------------------- */
/*        TTABLE: Table des parametres renormalises sur UVFONC de l'iso. 
*/
/*        IERCOD: = 0, OK */
/*                = 1, ISOFAV est hors des valeurs permises. */

/*     COMMONS UTILISES : */
/*     ------------------ */

/*     REFERENCES APPELEES : */
/*     --------------------- */

/*     DESCRIPTION/REMARQUES/LIMITATIONS : */
/*     ----------------------------------- */

/* $    HISTORIQUE DES MODIFICATIONS : */
/*     ------------------------------ */
/*     06-02-92: RBD; Creation version originale, d'apres MA1NPA. */
/* > */
/* ********************************************************************** 
*/
/*   Le nom de la routine */


    /* Parameter adjustments */
    --rootlg;
    uvfonc -= 3;

    /* Function Body */
    ibb = mnfndeb_();
    if (ibb >= 3) {
	mgenmsg_("MMA1NOP", 7L);
    }

    alinu = (uvfonc[4] - uvfonc[3]) / 2.;
    blinu = (uvfonc[4] + uvfonc[3]) / 2.;
    alinv = (uvfonc[6] - uvfonc[5]) / 2.;
    blinv = (uvfonc[6] + uvfonc[5]) / 2.;

    if (*isofav == 1) {
	ttable[0] = uvfonc[5];
	i__1 = *nbroot;
	for (ii = 1; ii <= i__1; ++ii) {
	    ttable[ii] = alinv * rootlg[ii] + blinv;
/* L100: */
	}
	ttable[*nbroot + 1] = uvfonc[6];
    } else if (*isofav == 2) {
	ttable[0] = uvfonc[3];
	i__1 = *nbroot;
	for (ii = 1; ii <= i__1; ++ii) {
	    ttable[ii] = alinu * rootlg[ii] + blinu;
/* L200: */
	}
	ttable[*nbroot + 1] = uvfonc[4];
    } else {
	goto L9100;
    }

    goto L9999;

/* ------------------------------ THE END ------------------------------- 
*/

L9100:
    *iercod = 1;
    goto L9999;

L9999:
    if (*iercod != 0) {
	maermsg_("MMA1NOP", iercod, 7L);
    }
    if (ibb >= 3) {
	mgsomsg_("MMA1NOP", 7L);
    }

 return 0 ;

} /* mma1nop_ */

