Sponsored Content
Top Forums UNIX for Advanced & Expert Users Mawk printf %d maxes out at 2147483647 Post 302883078 by Corona688 on Friday 10th of January 2014 04:31:37 PM
Old 01-10-2014
I've dug into mawk's code a bit and switching it to a 64-bit integer isn't quite as easy as it seems. It's a sticky problem, because of the mutability of numbers in awk. They are quite careful to get a 32-bit int and a 64-bit double, since all 32-bit integers can be faithfully represented by a 64-bit float, but what happens when your int is 64-bit? Not all 64-bit integers can be perfectly represented by the 53-bits precision of a 64-bit float.

It also passes on its printf options into the system printf's, almost completely faithfully, except for a weird case they added in 1995 for a system that only had 16-bit ints. I suspect another such weird case would be needed for 64-bits.

Last edited by Corona688; 01-10-2014 at 06:49 PM..
 

10 More Discussions You Might Find Interesting

1. Programming

printf

What is the output of the following program considering an x86 based parameter passing sequence where stack grows towards lower memory addresses and that arguments are evaluated from right to left: int i=10; int f1() { static int i = 15; printf("f1:%d ", i); return i--; } main() {... (2 Replies)
Discussion started by: arunviswanath
2 Replies

2. Shell Programming and Scripting

printf

How to print output in following format? A..................ok AA................ok AAA..............ok AAAAAA........ok "ok" one under one (4 Replies)
Discussion started by: mirusnet
4 Replies

3. Shell Programming and Scripting

printf in awk

Hi friends.. I am confused about awk printf option.. I have a comma separated file 88562848,21-JAN-08,2741079, -1188,-7433,TESTING 88558314,21-JAN-08,2741189, -1273,-7976,TESTING and there is a line in my script ( written by someone else) What is the use of command? I guess... (10 Replies)
Discussion started by: clx
10 Replies

4. Shell Programming and Scripting

awk and printf

echo $bbsize 1.5 echo $fillpercent .95 echo $bbsize | awk '{printf "%.2f\n",$0*$fillpercent}' 2.25 echo $bbsize | awk '{printf "%.2f\n",$0*.95}' 1.42 1.42 is what I'm expecting... echo $blocksize 4096 echo $bbsize | awk '{printf "%.2f\n",$0*$blocksize}' 2.25 echo $bbsize |... (3 Replies)
Discussion started by: xgringo
3 Replies

5. Shell Programming and Scripting

IF and awk/printf

Hi Friends, Scripting newb here. So I'm trying to create a geektool script that uses awk and printf to output certain fields from top (namely command, cpu%, rsize, pid and time, in that order). After much trial and error, I've pretty much succeeded, with one exception. Any process whose name... (3 Replies)
Discussion started by: thom.mattson
3 Replies

6. UNIX for Dummies Questions & Answers

Need help with printf

Hi, I have just completed my first script (:D) and now i just need to format it with printf. This is what I have: #!/bin/ksh TOTB=0 TOTF=0 TOTI=0 HOST=`hostname` echo " FSYSTEM BLKS FREE INUSE MOUNTEDON" df -m | grep -v ":"|grep -v Free|grep -v "/proc"| while read FSYSTEM... (2 Replies)
Discussion started by: compan023
2 Replies

7. UNIX for Dummies Questions & Answers

mawk script to compare 2 files and report where they match

I have two files and would like a report of where they match. Example of file1: 1 1 1 2 2 2 13 14 15 4 4 4 15 16 17 100 102 1004 56 57 890 Example of file2: 2 2 2 16 10 11 45 22 35 13 14 15 1001 1002 3456 100 102 1004 (1 Reply)
Discussion started by: kenneth.mcbride
1 Replies

8. UNIX for Dummies Questions & Answers

The meaning of %s in printf

I have this command like that has %s in it, I know %s calls a column, but I am not sure I understand which column (I mean for my case I can check the input file, but I want to know how is this %s used, how comes tha same symbo; gives different columns in one command line: {printf "grep %s... (22 Replies)
Discussion started by: cosmologist
22 Replies

9. Shell Programming and Scripting

MAWK does not support length(array)?

As Brendan O'Conner writes in this blog, mawk is near 8 times faster than gawk, so I am going to give mawk a go, but I got errors when trying to print the length of an array in mawk using length() function, is it not supported in mawk? or there's another way to get the length of an array in mawk? ... (3 Replies)
Discussion started by: kevintse
3 Replies

10. UNIX for Advanced & Expert Users

[SOLVED] Making mktime/strftime available to mawk

I frequently use awk time functions and am switching some scripts over to mawk. I don't have the mktime or strftime functions in mawk, but it appears that there is a way, as explained here in "Time functions": Please only cut-and-past links to man pages from our man pages. So, simple... (10 Replies)
Discussion started by: treesloth
10 Replies
Int64(3)							   OCaml library							  Int64(3)

NAME
Int64 - 64-bit integers. Module Module Int64 Documentation Module Int64 : sig end 64-bit integers. This module provides operations on the type int64 of signed 64-bit integers. Unlike the built-in int type, the type int64 is guaranteed to be exactly 64-bit wide on all platforms. All arithmetic operations over int64 are taken modulo 2^{64 Performance notice: values of type int64 occupy more memory space than values of type int , and arithmetic operations on int64 are gener- ally slower than those on int . Use int64 only when the application requires exact 64-bit arithmetic. val zero : int64 The 64-bit integer 0. val one : int64 The 64-bit integer 1. val minus_one : int64 The 64-bit integer -1. val neg : int64 -> int64 Unary negation. val add : int64 -> int64 -> int64 Addition. val sub : int64 -> int64 -> int64 Subtraction. val mul : int64 -> int64 -> int64 Multiplication. val div : int64 -> int64 -> int64 Integer division. Raise Division_by_zero if the second argument is zero. This division rounds the real quotient of its arguments towards zero, as specified for Pervasives.(/) . val rem : int64 -> int64 -> int64 Integer remainder. If y is not zero, the result of Int64.rem x y satisfies the following property: x = Int64.add (Int64.mul (Int64.div x y) y) (Int64.rem x y) . If y = 0 , Int64.rem x y raises Division_by_zero . val succ : int64 -> int64 Successor. Int64.succ x is Int64.add x Int64.one . val pred : int64 -> int64 Predecessor. Int64.pred x is Int64.sub x Int64.one . val abs : int64 -> int64 Return the absolute value of its argument. val max_int : int64 The greatest representable 64-bit integer, 2^{63 - 1. val min_int : int64 The smallest representable 64-bit integer, -2^{63. val logand : int64 -> int64 -> int64 Bitwise logical and. val logor : int64 -> int64 -> int64 Bitwise logical or. val logxor : int64 -> int64 -> int64 Bitwise logical exclusive or. val lognot : int64 -> int64 Bitwise logical negation val shift_left : int64 -> int -> int64 Int64.shift_left x y shifts x to the left by y bits. The result is unspecified if y < 0 or y >= 64 . val shift_right : int64 -> int -> int64 Int64.shift_right x y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 64 . val shift_right_logical : int64 -> int -> int64 Int64.shift_right_logical x y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x . The result is unspecified if y < 0 or y >= 64 . val of_int : int -> int64 Convert the given integer (type int ) to a 64-bit integer (type int64 ). val to_int : int64 -> int Convert the given 64-bit integer (type int64 ) to an integer (type int ). On 64-bit platforms, the 64-bit integer is taken modulo 2^{63, i.e. the high-order bit is lost during the conversion. On 32-bit platforms, the 64-bit integer is taken modulo 2^{31, i.e. the top 33 bits are lost during the conversion. val of_float : float -> int64 Convert the given floating-point number to a 64-bit integer, discarding the fractional part (truncate towards 0). The result of the con- version is undefined if, after truncation, the number is outside the range [ Int64.min_int , Int64.max_int ]. val to_float : int64 -> float Convert the given 64-bit integer to a floating-point number. val of_int32 : int32 -> int64 Convert the given 32-bit integer (type int32 ) to a 64-bit integer (type int64 ). val to_int32 : int64 -> int32 Convert the given 64-bit integer (type int64 ) to a 32-bit integer (type int32 ). The 64-bit integer is taken modulo 2^{32, i.e. the top 32 bits are lost during the conversion. val of_nativeint : nativeint -> int64 Convert the given native integer (type nativeint ) to a 64-bit integer (type int64 ). val to_nativeint : int64 -> nativeint Convert the given 64-bit integer (type int64 ) to a native integer. On 32-bit platforms, the 64-bit integer is taken modulo 2^{32. On 64-bit platforms, the conversion is exact. val of_string : string -> int64 Convert the given string to a 64-bit integer. The string is read in decimal (by default) or in hexadecimal, octal or binary if the string begins with 0x , 0o or 0b respectively. Raise Failure int_of_string if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int64 . val to_string : int64 -> string Return the string representation of its argument, in decimal. val bits_of_float : float -> int64 Return the internal representation of the given float according to the IEEE 754 floating-point ``double format'' bit layout. Bit 63 of the result represents the sign of the float; bits 62 to 52 represent the (biased) exponent; bits 51 to 0 represent the mantissa. val float_of_bits : int64 -> float Return the floating-point number whose internal representation, according to the IEEE 754 floating-point ``double format'' bit layout, is the given int64 . type t = int64 An alias for the type of 64-bit integers. val compare : t -> t -> int The comparison function for 64-bit integers, with the same specification as Pervasives.compare . Along with the type t , this function compare allows the module Int64 to be passed as argument to the functors Set.Make and Map.Make . OCamldoc 2014-06-09 Int64(3)
All times are GMT -4. The time now is 10:41 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy