This documentation is automatically generated by online-judge-tools/verification-helper
#include "geometry/cross_point_line_line.hpp"
#ifndef KK2_GEOMETRY_CROSS_POINT_LINE_LINE_HPP
#define KK2_GEOMETRY_CROSS_POINT_LINE_LINE_HPP 1
#include <optional>
#include "../math/rational.hpp"
#include "line.hpp"
namespace kk2 {
template <typename T>
std::optional<Point<Rational<T>>> cross_point(const Line<T> &l, const Line<T> &m) {
// Cramer's rule
T det = l.a * m.b - l.b * m.a;
if (det == 0) return std::nullopt;
T x = l.b * m.c - l.c * m.b;
T y = l.c * m.a - l.a * m.c;
return Point<T>(Rational<T>(x, det), Rational<T>(y, det));
}
} // namespace kk2
#endif // KK2_GEOMETRY_CROSS_POINT_LINE_LINE_HPP
Traceback (most recent call last):
File "/opt/hostedtoolcache/Python/3.12.0/x64/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/hostedtoolcache/Python/3.12.0/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus.py", line 187, in bundle
bundler.update(path)
File "/opt/hostedtoolcache/Python/3.12.0/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
self.update(self._resolve(pathlib.Path(included), included_from=path))
File "/opt/hostedtoolcache/Python/3.12.0/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 401, in update
self.update(self._resolve(pathlib.Path(included), included_from=path))
File "/opt/hostedtoolcache/Python/3.12.0/x64/lib/python3.12/site-packages/onlinejudge_verify/languages/cplusplus_bundle.py", line 312, in update
raise BundleErrorAt(path, i + 1, "#pragma once found in a non-first line")
onlinejudge_verify.languages.cplusplus_bundle.BundleErrorAt: type_traits/io.hpp: line 4: #pragma once found in a non-first line