BUG: Illegal function call / Division By Zero Errors (94778)



The information in this article applies to:

  • Microsoft Visual Basic Standard Edition for Windows 2.0
  • Microsoft Visual Basic Standard Edition for Windows 3.0
  • Microsoft Visual Basic Professional Edition for Windows 2.0
  • Microsoft Visual Basic Professional Edition for Windows 3.0
  • Microsoft Visual Basic Standard Edition for Windows 1.0
  • Microsoft Visual Basic for MS-DOS
  • Microsoft Basic Professional Development System for MS-DOS 7.0
  • Microsoft Cinemania for Windows 1993 edition

This article was previously published under Q94778

SYMPTOMS

Certain complex numeric expressions may incorrectly cause "Illegal function call" or "Division by zero" errors when run in the interpreter environment of the above mentioned Basic products. This problem only happens on computers that have a math coprocessor.

These errors, however, do not occur with programs compiled using the BC.EXE compiler included with Microsoft Basic Professional Development System for MS-DOS, version 7.1 and the Standard and Professional Editions of Microsoft Visual Basic for MS-DOS, version 1.0

STATUS

Microsoft has confirmed this to be a bug with the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

To work around this problem, do one of the following:

  • Break the complex equation into smaller parts that are evaluated separately.
  • Turn off use of the coprocessor with SET NO87=x at the DOS prompt (PDS and Visual Basic for MS-DOS only).
  • Compile using the alternate math (/FPa) option (PDS and the Professional Version of Visual Basic for MS-DOS only).
The following code reproduces the "Illegal Function Call" error on a computer that has a coprocessor:
   test = 1 + (1 + 1 * (1 * (1 + 1 ^ 1)))
				
The following code reproduces the "Division by zero" error on a computer that has coprocessor:
   test = 1 + (1 - 1 * (1 + 1 / 1 ^ 1))
				
These are not the only expressions that cause the problem.

Modification Type:MinorLast Reviewed:8/16/2005
Keywords:kbbug KB94778