#!/bin/csh
#######################################################################################################################################
# #
# C O N V E R S I O N D ' U N P O L Y N O M E A C O E F F I C I E N T S E N T I E R S #
# E N U N R A T I O N N E L I R R E D U C T I B L E : #
# #
# #
# Utilisation : #
# #
# $xcg/PolynomeRationnel.01$vv$Z <ListeCoefficients> #
# #
# #
# Nota : #
# #
# Voir 'v $xcg/RationnelPolynome.01$vv$Z' #
# pour effectuer la conversion inverse... #
# #
# #
# Author of '$xcg/PolynomeRationnel.01$vv$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, 20200604095705). #
# #
#######################################################################################################################################
set ListeCoefficients=($1)
set ListeCoefficients=`echo "$ListeCoefficients" | $R "," "$K_BLANC"`
set Numerateur=1
set Denominateur=1
set NoMbRe=100
# Valeur arbitraire... #
set LNombresPremiers=`$xci/valeurs_Goldbach$X p=1 d=$NoMbRe editer_nombres_premiers=VRAI calculer_decompositions=FAUX`
# Liste des premiers nombres premiers... #
set InDiCe=$#ListeCoefficients
set Polynome="$K_VIDE"
foreach Coefficient ($ListeCoefficients)
set CoefficientNS=`echo "$Coefficient" | $SE -e "s/^+//"`
set VCoefficient=`calculINS $CoefficientNS`
if ("$CoefficientNS" == "$VCoefficient") then
else
EROR "Le coefficient (=$Coefficient) doit etre entier."
endif
set CoefficientNS=$VCoefficient
set NombrePremier=$LNombresPremiers[$InDiCe]
if ($CoefficientNS == 0) then
else
@ Exposant = $InDiCe - 1
set Polynome="$Polynome""$Coefficient""*""(X^$Exposant)"
if ($CoefficientNS < 0) then
set Denominateur=`calculINS $Denominateur*pow($NombrePremier,-($CoefficientNS))`
else
if ($CoefficientNS > 0) then
set Numerateur=`calculINS $Numerateur*pow($NombrePremier,$CoefficientNS)`
else
endif
endif
endif
@ InDiCe = $InDiCe - 1
end
echo "$Polynome" | \
$SE -e "s/\(+(\)+/\1/g" \
-e "s/+\((\)\(-\)/\2\1/g" \
-e"s/^\((\)\(.\)/\2\1/g" \
-e "s/\((\)\([$Alphabet_0_9]*\*\)/\2\1/g" \
-e "s/\([-+]\)1\*/\1/g" \
-e "s/^1\*//" \
-e 's/+$//' \
-e "s/(X\^0)/1/g" \
-e "s/\([^$Alphabet_0_9][$Alphabet_0_9]*\)\*1"'$/\1/' \
-e 's+$'"+ ==> R=$Numerateur/$Denominateur+"