#include <iostream>
#include <cmath>
struct Vector2D {
double x;
};
bool IsEqual(const double & a, const double & b) {
if (a == b)
return true;
double tolerance = pow(10., -5);
if (::fabs(a) < tolerance / 2.)
{
return ::fabs(b) < tolerance / 2.;
}
double diff = ::fabs((b - a) / a);
return (diff < tolerance);
}
bool IsEqual(Vector2D & a, Vector2D & b)
{ return IsEqual(a.x, b.x)); }
int main() {
Vector2D v1{1};
Vector2D v2{0};
// This innocent call will cause an access violation
// the access violation occurs *only* if fp:strict and /EHa switches are used
IsEqual(v1, v2);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CgpzdHJ1Y3QgVmVjdG9yMkQgewogIGRvdWJsZSB4Owp9OwoKYm9vbCBJc0VxdWFsKGNvbnN0IGRvdWJsZSAmIGEsIGNvbnN0IGRvdWJsZSAmIGIpIHsKICBpZiAoYSA9PSBiKQogICAgcmV0dXJuIHRydWU7CgogIGRvdWJsZSB0b2xlcmFuY2UgPSBwb3coMTAuLCAtNSk7CiAgaWYgKDo6ZmFicyhhKSA8IHRvbGVyYW5jZSAvIDIuKQogIHsKICAgIHJldHVybiA6OmZhYnMoYikgPCB0b2xlcmFuY2UgLyAyLjsKICB9CiAgZG91YmxlIGRpZmYgPSA6OmZhYnMoKGIgLSBhKSAvIGEpOwogIHJldHVybiAoZGlmZiA8IHRvbGVyYW5jZSk7Cn0KCmJvb2wgSXNFcXVhbChWZWN0b3IyRCAmIGEsIFZlY3RvcjJEICYgYikKeyByZXR1cm4gSXNFcXVhbChhLngsIGIueCkpOyB9CgppbnQgbWFpbigpIHsKICBWZWN0b3IyRCB2MXsxfTsKICBWZWN0b3IyRCB2MnswfTsKICAvLyBUaGlzIGlubm9jZW50IGNhbGwgd2lsbCBjYXVzZSBhbiBhY2Nlc3MgdmlvbGF0aW9uCiAgLy8gdGhlIGFjY2VzcyB2aW9sYXRpb24gb2NjdXJzICpvbmx5KiBpZiBmcDpzdHJpY3QgYW5kIC9FSGEgc3dpdGNoZXMgYXJlIHVzZWQKICBJc0VxdWFsKHYxLCB2Mik7Cn0=
Main.java:1: error: illegal character: '#'
#include <iostream>
^
Main.java:1: error: class, interface, or enum expected
#include <iostream>
^
Main.java:2: error: illegal character: '#'
#include <cmath>
^
Main.java:6: error: class, interface, or enum expected
};
^
Main.java:8: error: class, interface, or enum expected
bool IsEqual(const double & a, const double & b) {
^
Main.java:12: error: class, interface, or enum expected
double tolerance = pow(10., -5);
^
Main.java:13: error: class, interface, or enum expected
if (::fabs(a) < tolerance / 2.)
^
Main.java:16: error: class, interface, or enum expected
}
^
Main.java:18: error: class, interface, or enum expected
return (diff < tolerance);
^
Main.java:19: error: class, interface, or enum expected
}
^
Main.java:22: error: class, interface, or enum expected
{ return IsEqual(a.x, b.x)); }
^
Main.java:26: error: class, interface, or enum expected
Vector2D v2{0};
^
Main.java:29: error: class, interface, or enum expected
IsEqual(v1, v2);
^
Main.java:30: error: class, interface, or enum expected
}
^
14 errors