Subversion Repositories tendra.SVN

Rev

Rev 7 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 7 Rev 38
Line 80... Line 80...
80
 * This routine calculates the binary log of n (i.e. the smallest number
80
 * This routine calculates the binary log of n (i.e. the smallest number
81
 * r such that n <= 2**r).
81
 * r such that n <= 2**r).
82
 */
82
 */
83
 
83
 
84
number
84
number
85
log2(number n)
85
log_2(number n)
86
{
86
{
87
    number r;
87
    number r;
88
    number m;
88
    number m;
89
    for (r = 0, m = 1; n > m && m; r++, m *= 2) /* empty */ ;
89
    for (r = 0, m = 1; n > m && m; r++, m *= 2) /* empty */ ;
90
    return(r);
90
    return(r);
Line 479... Line 479...
479
			/* %EO -> enumeration order */
479
			/* %EO -> enumeration order */
480
			if (HAVE_ENUM) {
480
			if (HAVE_ENUM) {
481
			    number_P pn = en_order(CRT_ENUM);
481
			    number_P pn = en_order(CRT_ENUM);
482
			    number n = DEREF_number(pn);
482
			    number n = DEREF_number(pn);
483
			    if (*s == '2') {
483
			    if (*s == '2') {
484
				n = log2(n);
484
				n = log_2(n);
485
				s++;
485
				s++;
486
			    }
486
			    }
487
			    sprintf_v(nbuff, "%lu", n);
487
			    sprintf_v(nbuff, "%lu", n);
488
			    output_string(nbuff);
488
			    output_string(nbuff);
489
			} else {
489
			} else {
Line 719... Line 719...
719
			if (HAVE_UNION) {
719
			if (HAVE_UNION) {
720
			    int_P pi = un_no_fields(CRT_UNION);
720
			    int_P pi = un_no_fields(CRT_UNION);
721
			    number n = (number)DEREF_int(pi);
721
			    number n = (number)DEREF_int(pi);
722
			    c = *s;
722
			    c = *s;
723
			    if (c == '2') {
723
			    if (c == '2') {
724
				n = log2(n);
724
				n = log_2(n);
725
				s++;
725
				s++;
726
			    } else if (c == '3') {
726
			    } else if (c == '3') {
727
				n = log2(n + 1);
727
				n = log_2(n + 1);
728
				s++;
728
				s++;
729
			    }
729
			    }
730
			    sprintf_v(nbuff, "%lu", n);
730
			    sprintf_v(nbuff, "%lu", n);
731
			    output_string(nbuff);
731
			    output_string(nbuff);
732
			} else {
732
			} else {