Index: Singular/LIB/poly.lib
===================================================================
--- Singular/LIB/poly.lib	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Singular/LIB/poly.lib	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -21,6 +21,4 @@
  rad_con(p,I);          check radical containment of polynomial p in ideal I
  content(f);            content of polynomial/vector f
- numerator(n);          numerator of number n
- denominator(n)         denominator of number n
  mod2id(M,iv);          conversion of a module M to an ideal
  id2mod(i,iv);          conversion inverse to mod2id
@@ -904,42 +902,4 @@
 ///////////////////////////////////////////////////////////////////////////////
 
-proc numerator(number n)
-"USAGE:    numerator(n); n number
-RETURN:   number, the numerator of n
-SEE ALSO: denominator, content, cleardenom
-EXAMPLE:  example numerator; shows an example
-"
-{
-  poly p = cleardenom(n+var(1));
-  return (number(coeffs(p,var(1))[1,1]));
-}
-example
-{
-  "EXAMPLE:"; echo = 2;
-  ring r = 0,x, dp;
-  number n = 3/2;
-  numerator(n);
-}
-///////////////////////////////////////////////////////////////////////////////
-
-proc denominator(number n)
-"USAGE:    denominator(n); n number
-RETURN:   number, the denominator of n
-SEE ALSO: numerator, content, cleardenom
-EXAMPLE:  example denominator; shows an example
-"
-{
-  poly p = cleardenom(n+var(1));
-  return (number(coeffs(p,var(1))[2,1]));
-}
-example
-{
-  "EXAMPLE:"; echo = 2;
-  ring r = 0,x, dp;
-  number n = 3/2;
-  denominator(n);
-}
-////////////////////////////////////////////////////////////////////////
-
 ////////////////////////////////////////////////////////////////////////
 // The idea of the procedures mod2id, id2mod and subrInterred is, to
Index: Singular/iparith.cc
===================================================================
--- Singular/iparith.cc	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Singular/iparith.cc	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -81,4 +81,5 @@
 #include <kernel/timer.h>
 
+#include <polys/coeffrings.h>
 
 lists rDecompose(const ring r); ring rCompose(const lists  L);
@@ -3703,4 +3704,26 @@
   return FALSE;
 }
+
+/// Return the denominator of the input number
+/// NOTE: the input number is normalized as a side effect
+static BOOLEAN jjDENOMINATOR(leftv res, leftv v)
+{
+  number n = reinterpret_cast<number>(v->Data());
+  res->data = reinterpret_cast<void*>(n_GetDenom(n, currRing));
+  return FALSE;
+}
+
+/// Return the numerator of the input number
+/// NOTE: the input number is normalized as a side effect
+static BOOLEAN jjNUMERATOR(leftv res, leftv v)
+{
+  number n = reinterpret_cast<number>(v->Data());
+  res->data = reinterpret_cast<void*>(n_GetNumerator(n, currRing));
+  return FALSE;
+}
+
+
+
+
 #ifdef HAVE_FACTORY
 static BOOLEAN jjDET(leftv res, leftv v)
Index: Singular/table.h
===================================================================
--- Singular/table.h	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Singular/table.h	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -78,4 +78,6 @@
 ,{D(jjDEGREE),     DEGREE_CMD,      STRING_CMD,     MODUL_CMD     , NO_PLURAL |ALLOW_RING | NO_ZERODIVISOR}
 ,{D(jjDEFINED),    DEFINED_CMD,     INT_CMD,        DEF_CMD       , ALLOW_PLURAL |ALLOW_RING}
+,{D(jjDENOMINATOR),DENOMINATOR_CMD, NUMBER_CMD,     NUMBER_CMD    , ALLOW_PLURAL |ALLOW_RING}
+,{D(jjNUMERATOR),  NUMERATOR_CMD,   NUMBER_CMD,     NUMBER_CMD    , ALLOW_PLURAL |ALLOW_RING}
 #ifdef HAVE_FACTORY
 ,{D(jjDET_I),      DET_CMD,         INT_CMD,        INTMAT_CMD    , ALLOW_PLURAL |ALLOW_RING}
@@ -845,4 +847,5 @@
   { "degree",      0, DEGREE_CMD ,        CMD_1},
   { "delete",      0, DELETE_CMD ,        CMD_2},
+  { "denominator", 0, DENOMINATOR_CMD ,   CMD_1},  
   { "det",         0, DET_CMD ,           CMD_1},
   { "diff",        0, DIFF_CMD ,          CMD_2},
@@ -958,4 +961,5 @@
   { "nrows",       0, ROWS_CMD ,          CMD_1},
   { "number",      0, NUMBER_CMD ,        RING_DECL},
+  { "numerator",   0, NUMERATOR_CMD ,     CMD_1},
   { "nvars",       0, NVARS_CMD ,         CMD_1},
   { "open",        0, OPEN_CMD ,          CMD_1},
Index: Singular/tok.h
===================================================================
--- Singular/tok.h	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Singular/tok.h	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -59,4 +59,5 @@
   DEFINED_CMD,
   DELETE_CMD,
+  DENOMINATOR_CMD,
   DET_CMD,
   DUMP_CMD,
@@ -111,4 +112,5 @@
   NEWTONPOLY_CMD,
   NPARS_CMD,
+  NUMERATOR_CMD,
   NVARS_CMD,
   OPEN_CMD,
Index: Tst/Manual/listvar.res.gz.uu
===================================================================
--- Tst/Manual/listvar.res.gz.uu	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Tst/Manual/listvar.res.gz.uu	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -1,22 +1,22 @@
-begin 640 listvar.res.gz
-M'XL("`PJ<DX``VQI<W1V87(N<F5S`+67WT_;,!#'W_DK++2',BJ@X=<&HM(0
-MVQ2-;8CR-DV1FUR"A6,7^S):IOWOLY,F3;NF<2HM#VV5^WPO=_;Y<AT]W/C?
-M""&#(;GUK\DN:CS@;+Q[2<RO@`F&O;W+'?M-AD/"F<9?5!T(>#G02'%G-)=[
-M0_,Q43(D.""_R9_*<+PP>$N&$VM03"1$7U8W3W-:\AG1M;MG%:H6-\\K-+Z:
-M[L_V7Q>F=];$!!)V=;ZX^SZ_&P'EQ+^*^]/^K+(-CJQMGIS-]_"0,++F^G'T
-ML_!\;A'5B+RUT5HDO_QF5S:</CDF"0A0%*7JZ;U*%S?J;-X6TXU$&8#=1;M3
-MF0YBQJ%&:,R7M&E+!X/ZFJAB41PRWB+9ECS+@+QZ0#@H(C+EUJ0U15=IC^M:
-M:YFKO8WJ=O_S%;XSV>/(K)Y>)4BL9$KFIZK$'T#CARA:X[`1_YIQ=,0?91J$
-MLY"ST`E?0MOQ3QGG?GZ*G'`!4PSR0G/"E:F-O.MTP.?E!,%$=<+'_#_@-O8@
-MI>9L39WQ%V#)([;@"%8#VG&;-$8?G[/%+K7@B9(P-HG:4G/`OV?XP%)0CM[O
-M82)57;$9_PR=O(]03I;XS;AOEKP#7B]&IW6WO=899XF0"MR]SS1"ZH1'IF;1
-MI+DI=A.LB*B*2DU1B%^NNVCBB>U]*RV\1;-.TJ;16SSG.9/(0.#)%IK3+33'
-M6VB\+32#CAJR>K5HZFW&55-VD$[[HSE+DW&GYSPR/KZOO4]<-!.J///B7Y8Y
-MKO4MTXTOWG]J%",;7J=\C"9.>.JN*4>:?(#.9W8[)15#>V4\K<\[=\9>S#OV
-M5\/&TO"))D!ZHW[I+I_-+B[,8(A2W#":-(57"@I>9V/E"P2E('+A6>2E,EH3
-M40-O8(]UX",0,F7"SIM.O,C28CIU]!]*DZQ`YWAXN++9+;RB46">X<R;%TI*
-M.7L%1]ZL303)II:RCN^P7W3:S7_.=_(?2HB=>::#5U#2F8\5F'H03Z[\$\7`
-MG#IG_X;7F:+./'!(1[,T]:-N?.WL;Z[GU?\#[>==(\,,P8VW'7*E#VWDQTPL
-@;58S3WIV^F+A7M4&SX:UH:QG_C*^V?D+0_^')?$0````
+begin 644 listvar.res.gz
+M'XL("%X^!T\``VQI<W1V87(N<F5S`+6744_;,!#'W_D4UK2',BJ@*8P-1*4A
+MMBD:VQ#E;9HB-[D$"\<N]F6T3/ONL],F3;LF<2HM#VV5^_TO=_;Y<AW?7_O?
+M""&#$;GQK\@KU'C(V>35!3&_`B88]O8O]NPW&8T(9QI_474HX/E0(\6]\5+N
+MC<S'5,F0X(#\)G]*PW!E\-8,)]:@F$B(OBAOGN:TY'.B*W??EJA:W3PKT?AR
+M=C`_>%F9WED3$TC8Y=GJ[OO\;@24$_\R[L_Z\](V.+:V97(VWZ,CPLB6Z\?Q
+MSX7G,XNH6N2-C=8B^>77N[+A],F0)"!`492JI_=+75RKLWE;3-<210!V%^U.
+M93J(&8<*H3%?TKHM'0RJ:Z(6B^*0\0[)MN19!.15`\+!(B)3;G5:4W2E=EC5
+M6LM2[36JV_TO5_C69(]CLWIZDR"QDBE9GJH"OP>-'Z)HB\-:_&O&T1%_D&D0
+MSD/.0B=\#6W'/V6<^_DI<L(%S##("\T)5Z8V\J[3`5^6$P13U0F?\/^`V]B#
+ME)JS-7/&GX$E#]B"(U@-:,=MTAA]?,I6N]2")TK"Q"1J2\T!_Y[A/4M!.7J_
+M@ZE4544S_ADZ>1^CG*[QS;AOEKP#7BU&IW6WO=899XF0"MR]SS5"ZH1'IF;1
+MI-D4NPE61%1%A691B%^NNFCBJ>U]&RV\1;--TJ;1.SSG*9/(0.#)#IK3'33#
+M'33>#II!1PW9O%HTU3;CJBDZ2*?]T9RER:33<QX8G]Q5WB<NFBE5GGGQK\L<
+MU_J&Z=H7[S\UBI$-KU,^1A,G/'77%"--/D#G,[N=DA9#>VD\K<X[M\:^F'?L
+MKYJ-I>$C38#TQOW"73Z;G9^;P1"EN&8TJ0NO$"QXG4V4+Q"4@LB%9Y&7RFA+
+M1#6\@3W6@0^E"4:@,\_#C<UHX16-`O,,9]XT_)1R]@*.?,I$!$G3D=_&=UA/
+M.NOF/^<[^0\EQ,X\T\$+*.G,QPK,@"8>7?E'BH$Y%<[^#:\S19UYX)".YVGJ
+M1]WXRMELKN?->;W]/&IDF"&X\;:#;?2)1G["Q-IFU?.D9Z<C%NZ7;<K\LU\-
+033WSE^[UWE\/&CEJD1``````
 `
 end
Index: Tst/Manual/listvar.stat
===================================================================
--- Tst/Manual/listvar.stat	(revision 0a3fa32bcd8b202183dc9d54b4f82cb6d069f087)
+++ Tst/Manual/listvar.stat	(revision 1cbb1f452324cf72b33ef5a1cb6256d97bcbcbd0)
@@ -1,4 +1,4 @@
-1 >> tst_memory_0 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:348228
-1 >> tst_memory_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:794356
-1 >> tst_memory_2 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:827140
-1 >> tst_timer_1 :: 1316104113:3132- exportiert :3-1-3:ix86-Linux:mamawutz:13
+1 >> tst_memory_0 :: 1325874782:0- 0815 :spielwiese:version:dilbert:331480
+1 >> tst_memory_1 :: 1325874782:0- 0815 :spielwiese:version:dilbert:754392
+1 >> tst_memory_2 :: 1325874782:0- 0815 :spielwiese:version:dilbert:787192
+1 >> tst_timer_1 :: 1325874782:0- 0815 :spielwiese:version:dilbert:6
