# Singular

##### 7.7.5.0. deRhamCohom
Procedure from library `dmodapp.lib` (see dmodapp_lib).

Usage:
deRhamCohom(f[,w,eng,m]); f poly, w optional intvec,
eng and m optional ints

Return:
ring (a Weyl Algebra) containing a list 'DR' of ideal and int

Assume:
Basering is commutative and over a field of characteristic 0.

Purpose:
computes a basis of the n-th de Rham cohomology group of the complement
of the hypersurface defined by f, where n denotes the number of
variables of the basering

Note:
The output ring is the n-th Weyl algebra. It contains a list 'DR' with
two entries (ideal J and int m) such that {f^m*J[i] : i=1..size(I)} is
a basis of the n-th de Rham cohomology group of the complement of the
hypersurface defined by f.
If w is an intvec with exactly n strictly positive entries, w is used
in the computation. Otherwise, and by default, w is set to (1,...,1).
If eng<>0, `std` is used for Groebner basis computations,
otherwise, and by default, `slimgb` is used.
If m is given, it is assumed to be less than or equal to the minimal
integer root of the Bernstein-Sato polynomial of f. This assumption is
not checked. If not specified, m is set to the minimal integer root of
the Bernstein-Sato polynomial of f.

Theory:
(SST) pp. 232-235

Display:
If printlevel=1, progress debug messages will be printed,
if printlevel>=2, all the debug messages will be printed.

Example:
 ```LIB "dmodapp.lib"; ring r = 0,(x,y,z),dp; poly f = x^3+y^3+z^3; def A = deRhamCohom(f); // we see that the K-dim is 2 setring A; DR; ==> [1]: ==> _[1]=-x^3*Dx*Dy*Dz ==> _[2]=-x*y*z*Dx*Dy*Dz ==> [2]: ==> -2 ```