iverilog/ivtest/ivltests/pr1703120.v

32 lines
1.1 KiB
Verilog

module top;
integer ival;
real rval;
initial begin
$display("--- Printing as real ---");
$display("1/0 is %f. (Should be 0 -- x prints as 0)", 1/0);
$display("1/0.0 is %f. (Should be inf)", 1/0.0);
$display("1.0/0 is %f. (Should be inf)", 1.0/0);
$display("1.0/0.0 is %f. (should be inf)", 1.0/0.0);
// Moving these two lines before the previous four lines makes 1/0 print
// a large number, but not inf!
rval = 0.0;
ival = 0;
$display("1/integer zero is %f. (Should be 0 -- x prints as 0)", 1/ival);
$display("1/real zero is %f. (should be inf)", 1/rval);
$display("1.0/integer zero is %f. (Should be inf)", 1.0/ival);
$display("1.0/real zero is %f.", 1.0/rval);
$display("\n--- Printing as integer ---");
$display("1/0 is %d (Should be x)", 1/0);
$display("1/0.0 is %d", 1/0.0);
$display("1.0/0 is %d", 1.0/0);
$display("1.0/0.0 is %d", 1.0/0.0);
$display("1/integer zero is %d. (Should be x)", 1/ival);
$display("1/real zero is %d.", 1/rval);
$display("1.0/integer zero is %d.", 1.0/ival);
$display("1.0/real zero is %d.", 1.0/rval);
end
endmodule