.packageName <- "benchden"
ben01 <- function()  {return(c(0,1))}
ben02 <- function()  {return(0)}
ben03 <- function()  {return(0)}
ben04 <- function()  {return(0)}
ben05 <- function()  {return(NULL)}
ben06 <- function()  {return(NULL)}
ben07 <- function()  {return(NULL)}
ben08 <- function()  {return(c(0,1))}
ben09 <- function()  {return(1)} 
ben10 <- function()  {return(0)}
ben11 <- function()  {return(NULL)}
ben12 <- function()  {return(0)}
ben13 <- function()  {return(c(-5,-0.5,0.5,5))}
ben14 <- function()  {return(c(-1/exp(2),0,1/exp(2)))}
ben15 <- function()  {return(c(0,1))}
ben16 <- function()  {return(c(-1,0,1))}
ben17 <- function()  {return(c(0,1))}
ben18 <- function()  {return(0)}
ben19 <- function()  {return(NULL)}
ben20 <- function()  {return(0)}
ben21 <- function()  {return(NULL)}
ben22 <- function()  {return(NULL)}
ben23 <- function()  {return(NULL)}
ben24 <- function()  {return(NULL)}
ben25 <- function()  {return(c(-1.1,-0.1,0.1,1.1))}
ben26 <- function()  {return(c(-20.1,-20,-1,1,20,20.1))}
ben27 <- function()  {return(seq(-10,10))}
ben28 <- function()  {return(c(0,1))}

`bberdev` <- function(dnum=1) {
    if (is.nan(dnum) || ! dnum %in% 1:28)
        stop("dnum must be between 1 and 28")
    return (
            eval(               
                parse(text = sprintf("ben%02d()", dnum)) # evaluate "ben[dnum]()"-string
            )
        )
}

den01 <- function(x) {dunif(x,min=0,max=1)}
den02 <- function(x) {dexp(x)}
den03 <- function(x) {x*exp(-(x^2)/2)*(x>0)}
den04 <- function(x) {0.5*dexp(x,rate=1)+(x!=0)*0.5*dexp(-x,rate=1)}
den05 <- function(x) {dlogis(x)}
den06 <- function(x) {dcauchy(x,location=0,scale=1)}
den07 <- function(x) exp(-x-exp(-x))
den08 <- function(x) {    outvek<-rep(0,length(x))
  outvek[(x>0)&(x<=1)] <- 1/(2*sqrt(abs(x)+1*(x==0)))[(x>0)&(x<=1)]
  outvek
}
den09 <- function(x) {     outvek<-rep(0,length(x))
  outvek[(x>=1)] <- 1/(2*x[(x>=1)]^(3/2))
  outvek
}
den10 <- function(x) {1/(4*(1+abs(x))^(3/2))}
den11 <- function(x) {dnorm(x,mean=0,sd=1)}
den12 <- function(x) {dlnorm(x, meanlog = 0, sdlog = 1)}
den13 <- function(x) {0.5*dunif(x,min=-0.5,max=0.5) + 0.5*dunif(x,min=-5,max=5)}
den14 <- function(x) { outvek <- 1/(abs(x)*(log(abs(x+1*(x==0)+1*(abs(x)==1)))^2))*(x > -1/(exp(1)^2))*(x < 1/(exp(1)^2))
  outvek[x==0] <- 0
  outvek  
}
den15 <- function(x) {     outvek<-rep(0,length(x))
  outvek[(x>0)&(x<1)] <- -log(x[(x>0)&(x<1)])
  outvek   
}
den16 <- function(x) {(1-abs(x))*((1-abs(x))>0)}
den17 <- function(x) {dbeta(x, shape1=2, shape2=2)}
den18 <- function(x) {dchisq(x,df=1)}
den19 <- function(x) { outvek <- dnorm(sign(x)*abs(x)^(1/3))*(1/3)*((x^2)^(-1/3))
  outvek[x==0] <- 0
  outvek        
}
den20 <- function(x)  {     outvek<-rep(0,length(x))
  outvek[(x>0)] <- exp(-x[(x>0)]^(-1/2))*(0.5*x[(x>0)]^(-3/2))
  outvek
}
den21 <- function(x) {(1/3)*dnorm(x,mean=-20,sd=1/4)+(2/3)*dnorm(x,mean=0,sd=1)}
den22 <- function(x) {(3/4)*dnorm(x,mean=0,sd=1)+(1/4)*dnorm(x,mean=1.5,sd=1/3)}
den23 <- function(x) {(1/2)*dnorm(x,mean=0,sd=1) + (1/10)*dnorm(x,mean=-1,sd=0.1) +(1/10)*dnorm(x,mean=-0.5,sd=0.1)+ 
  (1/10)*dnorm(x,mean=0,sd=0.1) + (1/10)*dnorm(x,mean=0.5,sd=0.1)+(1/10)*dnorm(x,mean=1,sd=0.1)
}
den24 <- function(x) {(32/63)*dnorm(x,mean=-31/21,sd=32/63)+(16/63)*dnorm(x,mean=17/21,sd=16/63)+(8/63)*dnorm(x,mean=41/21,sd=8/63)+
  (4/63)*dnorm(x,mean=53/21,sd=4/63)+(2/63)*dnorm(x,mean=59/21,sd=2/63)+(1/63)*dnorm(x,mean=62/21,sd=1/63)
}
den25 <- function(x) { x2 <- abs(x)+0.1*(abs(x)<0.1)
  outvek <- 2*(1-(x2-0.1)^(1/3))*(abs(x)>=0.1)*(abs(x)<=1.1) 
  outvek
}
den26 <- function(x) {0.5*dunif(x,min=-1,max=1)+0.25*dunif(x,min=20,max=20.1)+0.25*dunif(x,min=-20.1,max=-20)}
den27 <- function(x) { (den16(x+9)+den16(x+7)+den16(x+5)+den16(x+3)+den16(x+1)+den16(x-9)+den16(x-7)+den16(x-5)+den16(x-3)+den16(x-1))/10
}
den28 <- function(x) {
  outvek<-rep(0,length(x))
  outvek[(0<x)&(x<1)]<-(-1/2)*log(abs(x*(1-x))+1*(x==0)+1*(x==1))[(0<x)&(x<1)] 
  outvek
}



`dberdev` <-
function(x,dnum = 1) {
  if (is.nan(dnum) || ! dnum %in% 1:28)
    stop("dnum must be between 1 and 28")
  return (
            eval(               
                parse(text = sprintf("den%02d(x)", dnum)) # evaluate "den[dnum](x)"-string
            )
        )
}
`nberdev` <- function(dnum=1) {
  if (is.nan(dnum) || ! dnum %in% 1:28)
  stop("dnum must be between 1 and 28")
  return( c("uniform",
            "exponential",
            "Maxwell",
            "double exponential",
            "logistic",
            "Cauchy",
            "extreme value",
            "infinite peak",
            "Pareto",
            "symmetric Pareto",
            "normal",
            "lognormal",
            "uniform scale mixture",
            "Matterhorn",
            "logarithmic peak",
            "isosceles triangle",
            "beta (2,2)",
            "chi-square (1)",
            "normal cubed",
            "inverse exponential",
            "Marronite",
            "skewed bimodal",
            "claw",
            "smooth comb",
            "caliper",
            "trimodal uniform",
            "sawtooth",              
            "bilogarithmic peak")[dnum])             
}
pen01 <- function(q) {punif(q)}
pen02 <- function(q) {pexp(q,rate=1)}    
pen03 <- function(q) {(q>0)*(1-exp(-q^2/2))}        
pen04 <- function(q) {(q<0)*0.5*(1-pexp(-q,rate=1))+(q>0)*0.5*pexp(q,rate=1)+0.5*(q>=0)}
pen05 <- function(q) {plogis(q,location=0,scale=1)}
pen06 <- function(q) {pcauchy(q, location = 0, scale = 1)}   
pen07 <- function(q) {exp(-exp(-q))}
pen08 <- function(q) {(q>0)*(q<1)*sqrt(abs(q))+1*(q>=1)}
pen09 <- function(q) {(q>1)*(1-1/sqrt(abs(q)+1*(q==0)))}
pen10 <- function(q) {(q>=0)*(1-1/(2*sqrt(abs(q)+1)))+(q<0)*(1/(2*sqrt(1+abs(q))))} 
pen11 <- function(q) {pnorm(q,mean=0,sd=1)} 
pen12 <- function(q) {plnorm(q,meanlog = 0, sdlog = 1)}
pen13 <- function(q) {0.5*punif(q,min=-0.5,max=0.5)+0.5*punif(q,min=-5,max=5)}
pen14 <- function(q) {   outvek <- rep(0,length(q))
  outvek[q==0]<-0.5
  outvek[(q!=0)&(abs(q)<exp(-2))] <- (0.5-sign(q)/log(abs(q)))[(q!=0)&(abs(q)<exp(-2))]
  outvek[q>exp(-2)]<-1
  outvek[q==Inf]<-1
  outvek[q==-Inf]<-0
  outvek
}
pen15 <- function(q) { outvek<-1*(q>=1)
  outvek[(q>0)&(q<1)] <- (q-q*log(abs(q)))[(q>0)&(q<1)]
  outvek[q==Inf]<-1
  outvek[q==-Inf]<-0
  outvek        
}
pen16 <- function(q) {(q>(-1))*(q<0)*(0.5+q+0.5*q^2)+(q>=0)*(q<1)*(0.5+q-0.5*q^2)+(q>=1)}
pen17 <- function(q) {pbeta(q, shape1=2, shape2=2)}
pen18 <- function(q) {pchisq(q,df=1)}
pen19 <- function(q) {pnorm(sign(q)*abs(q)^(1/3),mean=0,sd=1)}
pen20 <- function(q) {(q>0)*exp(-1/sqrt( q*(q>0)+10*(q<=0)  ))}
pen21 <- function(q) {(1/3)*pnorm(q,mean=-20,sd=1/4)+(2/3)*pnorm(q,mean=0,sd=1)}
pen22 <- function(q) {(3/4)*pnorm(q,mean=0,sd=1)+(1/4)*pnorm(q,mean=1.5,sd=1/3)}
pen23 <- function(q) {0.5*pnorm(q,mean=0,sd=1)+0.1*pnorm(q,mean=-1,sd=0.1)+0.1*pnorm(q,mean=-0.5,sd=0.1)+0.1*pnorm(q,mean=0,sd=0.1)+
  0.1*pnorm(q,mean=0.5,sd=0.1)+0.1*pnorm(q,mean=1,sd=0.1)
}
pen24 <- function(q) {(32/63)*pnorm(q,mean=-31/21,sd=32/63)+(16/63)*pnorm(q,mean=17/21,sd=16/63)+(8/63)*pnorm(q,mean=41/21,sd=8/63)+
  (4/63)*pnorm(q,mean=53/21,sd=4/63)+(2/63)*pnorm(q,mean=59/21,sd=2/63)+(1/63)*pnorm(q,mean=62/21,sd=1/63)
}
pen25 <- function(q) {0.5*(q>=1.1)+(q>=-0.1)*0.5+(q<1.1)*(q>0.1)*0.5*(4*(q-0.1)-3*(abs(q-0.1)^(4/3)))+
  (q>-1.1)*(q<(-0.1))*0.5*(1-(4*(abs(q)-0.1)-3*abs(-q-0.1)^(4/3)))
}
pen26 <- function(q) {0.5*punif(q,min=-1,max=1)+0.25*punif(q,min=20,max=20.1)+0.25*punif(q,min=-20.1,max=-20)}
pen27 <- function(q){ (pen16(q+9)+pen16(q+7)+pen16(q+5)+pen16(q+3)+pen16(q+1)+pen16(q-9)+pen16(q-7)+pen16(q-5)+pen16(q-3)+pen16(q-1))/10
}
pen28 <- function(q)    {outvek<-(q>=1)
  outvek[(q>0)&(q<1)]<-(-0.5*q*log(abs(q))+0.5*(1-q)*log(abs(1-q))+q)[(q>0)&(q<1)]
  outvek[q==Inf]<-1
  outvek[q==-Inf]<-0
  outvek
}

`pberdev` <- function(q, dnum=1) {
        if (is.nan(dnum) || ! dnum %in% 1:28)
            stop("dnum must be between 1 and 28")
        return (
            eval(               
                parse(text = sprintf("pen%02d(q)", dnum)) # evaluate "pen[dnum](q)"-string
            )
        )
}
qen01 <- function(p) {qunif(p)}
qen02 <- function(p) {qexp(p,rate=1)}    
qen03 <- function(p) {sqrt(-2*log(1-p))}
qen04 <- function(p)  {
  outvek <- rep(0,length(p))
  outvek[p>0.5]<-qexp((abs(2*p-1)),rate=1)[p>0.5]
  outvek[p<0.5]<- -qexp(abs(1-2*p),rate=1)[p<0.5]
  outvek
}       
qen05 <- function(p) {qlogis(p,location=0,scale=1)}
qen06 <- function(p) {qcauchy(p, location = 0, scale = 1)}
qen07 <- function(p) {-log(-log(p))}
qen08 <- function(p) {p^2}
qen09 <- function(p) {1/(1-p)^2}
qen10 <- function(p)  {
  outvek <- rep(0,length(p))        
  outvek[p>0.5]<- (1/(1-abs(2*p-1))^2-1)[p>0.5]
  outvek[p<0.5]<- 1-(1/(1-abs(1-2*p))^2)[p<0.5]
  outvek
}       
qen11 <- function(p) {qnorm(p,mean=0,sd=1)} 
qen12<- function(p) {qlnorm(p,meanlog = 0, sdlog = 1)}
qen13 <- function(p) { outvek<-(-5)*(p==0)+5*(p==1)
  p2<-unique(p[(p>0)&(p<1)])            
  for (h in p2) {
    fkt<-function(z) (pberdev(z,dnum=13)-h) 
        outvek[p==h]<-uniroot(f=fkt,interval=c(-5,5))$root 
        }
  outvek
}
qen14 <- function(p)  { outvek <- rep(0,length(p))
  outvek[p!=0.5]<-(sign(p-0.5)*(exp(sign(p-0.5)/(0.5-p))))[p!=0.5]
  outvek
}
qen15 <- function(p) { outvek<-0*(p==0)+1*(p==1)
  p2<-unique(p[(p>0)&(p<1)])            
  for (h in p2) {
    fkt<-function(z) (pberdev(z,dnum=15)-h) 
    outvek[p==h]<-uniroot(f=fkt,interval=c(0,1))$root 
  }
  outvek
}
qen16 <- function(p) {(p>=0)*(p<=0.5)*(sqrt(2*p)-1)+(p>0.5)*(p<=1)*(1-sqrt(2-2*p))}
qen17 <- function(p) {qbeta(p, shape1=2, shape2=2)}
qen18 <- function(p) {qchisq(p,df=1)}
qen19 <- function(p) {(qnorm(p,mean=0,sd=1))^3}
qen20 <- function(p) {(p>0)*(1/(log( p*(p>0)+10*(p<0)))^2 )}
qen21 <- function(p) { outvek<-rep(0,length(p))
	for (i in 1:length(p)) {
	p2<-p[i]
	if ((p2>=10^(-5))&(p2<=(1-10^(-5)))) {
	    	fkt<-function(z) (pberdev(z,dnum=21)-p2) 
	    	int<-c(-22,5) 
		}	
	if ((p2>0)&(p2<10^(-5))) {
	    	#left<--21.5
		int<-c(-22.5,-20.5)
            	while (pberdev(int[1],dnum=21)>p2) int<-int-c(1,1)
    	    	fkt<-function(z) (pberdev(z,dnum=21)-p2) 
            	#int<-c(left,-20.5) 
		}
	if ((p2<1)*(p2>(1-10^(-5)))) {
    		#right<-5
		int<-c(4,6)
    		while (pberdev(int[2],dnum=21)<p2) {
      		int<-int+c(1,1)
      		}
	        fkt<-function(z) (pberdev(z,dnum=21)-p2) 
      		}
	if (p2==0) outvek[i]<- -Inf
	if (p2==1) outvek[i]<- Inf
	if ((p2>0)&(p2<1)) outvek[i]<-uniroot(f=fkt,interval=int)$root
	}
  outvek
  }

qen22 <- function(p) { outvek<-rep(0,length(p))
	for (i in 1:length(p)) {
	p2<-p[i]
	if ((p2>=10^(-5))&(p2<=(1-10^(-5)))) {
	    	fkt<-function(z) (pberdev(z,dnum=22)-p2) 
	    	int<-c(-5,5) 
		}	
	if ((p2>0)&(p2<10^(-5))) {
	    	#left<--21.5
		int<-c(-5,-3)
            	while (pberdev(int[1],dnum=22)>p2) int<-int-c(1,1)
    	    	fkt<-function(z) (pberdev(z,dnum=22)-p2) 
            	#int<-c(left,-20.5) 
		}
	if ((p2<1)*(p2>(1-10^(-5)))) {
    		#right<-5
		int<-c(2,4)
    		while (pberdev(int[2],dnum=22)<p2) {
      		int<-int+c(1,1)
      		}
	        fkt<-function(z) (pberdev(z,dnum=22)-p2) 
      		}
	if (p2==0) outvek[i]<- -Inf
	if (p2==1) outvek[i]<- Inf
	if ((p2>0)&(p2<1)) outvek[i]<-uniroot(f=fkt,interval=int)$root
	}
  outvek
  }

qen23 <- function(p) { outvek<-rep(0,length(p))
	for (i in 1:length(p)) {
	p2<-p[i]
	if ((p2>=10^(-5))&(p2<=(1-10^(-5)))) {
	    	fkt<-function(z) (pberdev(z,dnum=23)-p2) 
	    	int<-c(-5,5) 
		}	
	if ((p2>0)&(p2<10^(-5))) {
	    	#left<--21.5
		int<-c(-5,-3)
            	while (pberdev(int[1],dnum=23)>p2) int<-int-c(1,1)
    	    	fkt<-function(z) (pberdev(z,dnum=23)-p2) 
            	#int<-c(left,-20.5) 
		}
	if ((p2<1)*(p2>(1-10^(-5)))) {
    		#right<-5
		int<-c(3,5)
    		while (pberdev(int[2],dnum=23)<p2) {
      		int<-int+c(1,1)
      		}
	        fkt<-function(z) (pberdev(z,dnum=23)-p2) 
      		}
	if (p2==0) outvek[i]<- -Inf
	if (p2==1) outvek[i]<- Inf
	if ((p2>0)&(p2<1)) outvek[i]<-uniroot(f=fkt,interval=int)$root
	}
  outvek
  }


qen24 <- function(p) { outvek<-rep(0,length(p))
	for (i in 1:length(p)) {
	p2<-p[i]
	if ((p2>=10^(-5))&(p2<=(1-10^(-5)))) {
	    	fkt<-function(z) (pberdev(z,dnum=24)-p2) 
	    	int<-c(-5,5) 
		}	
	if ((p2>0)&(p2<10^(-5))) {
	    	#left<--21.5
		int<-c(-5,-3)
            	while (pberdev(int[1],dnum=24)>p2) int<-int-c(1,1)
    	    	fkt<-function(z) (pberdev(z,dnum=24)-p2) 
            	#int<-c(left,-20.5) 
		}
	if ((p2<1)*(p2>(1-10^(-5)))) {
    		#right<-5
		int<-c(3,5)
    		while (pberdev(int[2],dnum=24)<p2) {
      		int<-int+c(1,1)
      		}
	        fkt<-function(z) (pberdev(z,dnum=24)-p2) 
      		}
	if (p2==0) outvek[i]<- -Inf
	if (p2==1) outvek[i]<- Inf
	if ((p2>0)&(p2<1)) outvek[i]<-uniroot(f=fkt,interval=int)$root
	}
  outvek
  }


qen25 <- function(p) {
  outvek <- 1.1*(p==1)-1.1*(p==0)+(-0.1)*(p==0.5)
  p2<-unique(p[(p>0)&(p<1)&(p!=0.5)])           
  for (h in p2) {
    bnd<-c(-1.1,-0.1)*(h<0.5)+c(0.1,1.1)*(h>0.5)
        fkt<-function(z) (pberdev(z,dnum=25)-h) 
        outvek[p==h]<-uniroot(f=fkt,interval=bnd)$root 
        }
  outvek
}
qen26 <- function(p) {(p>=0)*(p<0.25)*(p/2.5-20.1)+(p>=0.25)*(p<0.75)*(4*(p-0.25)-1)+(p>=0.75)*((p-0.75)/2.5+20)} 
qen27<- function(p) {(p<1)*(qen16((10*p)%%1)+c(seq(-9,9,2),10)[floor(10*p)+1]) + 10*(p==1) }
qen28 <- function(p) { outvek<-(-1)*(p==0)+1*(p==1)
  p2<-unique(p[(p>0)&(p<1)])            
  for (h in p2) {
    fkt<-function(z) (pberdev(z,dnum=28)-h) 
        outvek[p==h]<-uniroot(f=fkt,interval=c(-1,1))$root 
        }
  outvek
}

`qberdev` <- function(p, dnum=1) {
        if (is.nan(dnum) || ! dnum %in% 1:28)
            stop("dnum must be between 1 and 28")
        return (
            eval(               
                parse(text = sprintf("qen%02d(p)", dnum)) # evaluate "qen[dnum](p)"-string
            )
        )
}
gen01 <- function(n) {runif(n, min=0, max=1)}                   # U(0,1)
gen02 <- function(n) {rexp(n)}                                  # Exp
gen03 <- function(n) {tmp <- runif(n,min=0,max=1)               # Maxwell
            outvek <- sqrt(-2*log(1-tmp))
            outvek
            }
gen04 <- function(n) {                                          # Double Exponential 
    vek<-rexp(n,rate=1)
    signvek<-sample(x=c(-1,1),size=n,replace=T)
    vek*signvek
    } 
gen05 <- function(n) {rlogis(n,location=0,scale=1)}             # logistic
gen06 <- function(n) {rcauchy(n, location=0, scale=1)}                                #Cauchy
gen07 <- function(n) { tmp <- runif(n,min=0,max=1)
            outvek <- -log(-log(tmp))
            outvek
            }
gen08 <- function(n) {tmp <- runif(n,min=0,max=1)               # 
            outvek <- tmp^2
            outvek
            }
gen09 <- function(n) {tmp <- runif(n,min=0,max=1)               # 
            outvek <- 1/((1-tmp)^2)
            outvek
            }
gen10 <- function(n) {tmp <- runif(n,min=0,max=1)               # 
            signvek<-sample(x=c(-1,1),size=n,replace=T)
            outvek <- 1/((1-tmp)^2)-1
            outvek <- outvek*signvek
            outvek
            }
    
gen11 <- function(n) {rnorm(n, mean=0, sd=1)}                                #N(0,1)
gen12 <- function(n) {rlnorm(n, meanlog = 0, sdlog = 1)}                         #Standard Lognormal
gen13 <- function(n) {outvek<-rep(0,n)                                   #BD 26 (trimodal uniform)
            component<-sample(2,size=n,replace=T,prob=c(0.5,0.5))
            outvek[component==1] <- runif(sum(component==1),min=-0.5, max=0.5 )
            outvek[component==2] <- runif(sum(component==2),min=-5, max=5 )
            outvek
}
gen14 <- function(n) {tmp <- runif(n,min=0,max=1)                
            outvek <- rep(0,n)
            outvek[tmp!=0.5]<-sign(tmp-0.5)*(exp(sign(tmp-0.5)/(0.5-tmp)))[tmp!=0.5]
            outvek
            }
      
gen15 <- function(n) {runif(n,min=0,max=1)*runif(n,min=0,max=1)}
gen16 <- function(n) {runif(n,min=-1,max=0)+runif(n,min=0,max=1)}
gen17 <- function(n) {rbeta(n, shape1=2, shape2=2)}                     # Beta
gen18 <- function(n) {rchisq(n,df=1)}
gen19 <- function(n) {rnorm(n,mean=0,sd=1)^3}

gen20 <- function(n) {
            1/rexp(n)^2
}

gen21 <- function(n) { outvek<-rep(0,n)                                  #BD 21 (Marronite)
            component<-sample(2,size=n,replace=T,prob=c(1/3,2/3))
            outvek[component==1] <- rnorm(sum(component==1),mean=-20,sd=0.25 )
            outvek[component==2] <- rnorm(sum(component==2),mean=0,sd=1 )
            outvek
}
gen22 <- function(n) { outvek<-rep(0,n)                                  #BD 22 (Skewed Bimodal)
            component<-sample(2,size=n,replace=T,prob=c(3/4,1/4))
            outvek[component==1] <- rnorm(sum(component==1),mean=0,sd=1)
            outvek[component==2] <- rnorm(sum(component==2),mean=1.5,sd=1/3)
            outvek
}

gen23 <- function(n) { outvek<-rep(0,n)                                  #BD 23 (Claw)
            component<-sample(6,size=n,replace=T,prob=c(1/2,1/10,1/10,1/10,1/10,1/10))
            outvek[component==1] <-rnorm(sum(component==1),mean=0,sd=1)
            outvek[component==2] <-rnorm(sum(component==2),mean=-1,sd=0.1)
            outvek[component==3] <-rnorm(sum(component==3),mean=-0.5,sd=0.1)
            outvek[component==4] <-rnorm(sum(component==4),mean=0,sd=0.1)
            outvek[component==5] <-rnorm(sum(component==5),mean=0.5,sd=0.1)
            outvek[component==6] <-rnorm(sum(component==6),mean=1,sd=0.1)
            outvek
}

gen24 <- function(n) { outvek<-rep(0,n)                                  #BD 24 (Smooth Comb)
            component<-sample(6,size=n,replace=T,prob=c(32/63,16/63,8/63,4/63,2/63,1/63))
            outvek[component==1] <-rnorm(sum(component==1),mean=-31/21,sd=32/63)
            outvek[component==2] <-rnorm(sum(component==2),mean=17/21,sd=16/63)
            outvek[component==3] <-rnorm(sum(component==3),mean=41/21,sd=8/63)
            outvek[component==4] <-rnorm(sum(component==4),mean=53/21,sd=4/63)
            outvek[component==5] <-rnorm(sum(component==5),mean=59/21,sd=2/63)
            outvek[component==6] <-rnorm(sum(component==6),mean=62/21,sd=1/63)
            outvek
}
gen25 <- function(n) { outvek<-rep(0,n)                                  #BD 25 (caliper)
		n2<-n
		outvek<-NULL
		while (n2 > 0) {
			x<-runif(n2)
			u<-runif(n2)
			ind<-(u<=1-x^(1/3))
			outvek<-c(outvek,x[ind==T])
			n2<-n2-sum(ind)
			}
                s<-sample(c(1,-1),replace=T,size=n)
                outvek<-s*(outvek+0.1)
            outvek
}
gen26 <- function(n) {outvek<-rep(0,n)                                   #BD 26 (trimodal uniform)
            component<-sample(3,size=n,replace=T,prob=c(0.5,0.25,0.25))
            outvek[component==1] <- runif(sum(component==1),min=-1, max=1 )
            outvek[component==2] <- runif(sum(component==2),min=20, max=20.1 )
            outvek[component==3] <- runif(sum(component==3),min=-20.1, max=-20 )
            outvek
}
gen27 <- function(n) {sample(c(-9,-7,-5,-3,-1,1,3,5,7,9),size=n,replace=T)+gen16(n)}    #BD27 (sawtooth)
gen28 <- function(n) {outvek<-runif(n,min=0,max=1)*runif(n,min=0,max=1)                  #BD28 (bilogarithmic peak)
            signvek<-sample(2,size=n,replace=T)         
            outvek[signvek==2]<-1-outvek[signvek==2]
            outvek
}
rberdev <- function(n=1,dnum=1) {
        if (is.nan(dnum) || ! dnum %in% 1:28)
            stop("dnum must be between 1 and 28")
        return (
            eval(               
                parse(text = sprintf("gen%02d(n)", dnum)) # evaluate "gen[dnum](n)"-string
            )
        )
        # gen01(n)   "uniform"                 
        # gen02(n)   "exponential"             
        # gen03(n)   "Maxwell"                 
        # gen04(n)   "double exponential"      
        # gen05(n)   "logistic"                
        # gen06(n)   "Cauchy"                  
        # gen07(n)   "extreme value"           
        # gen08(n)   "infinite peak"           
        # gen09(n)   "Pareto"                  
        # gen10(n)   "symmetric Pareto"       
        # gen11(n)   "normal"                 
        # gen12(n)   "lognormal"              
        # gen13(n)   "uniform scale mixture"  
        # gen14(n)   "Matterhorn"             
        # gen15(n)   "logarithmic peak"       
        # gen16(n)   "isosceles triangle"     
        # gen17(n)   "beta (2,2)"             
        # gen18(n)   "chi-square (1)"         
        # gen19(n)   "normal cubed"           
        # gen20(n)   "inverse exponential"    
        # gen21(n)   "Marronite"              
        # gen22(n)   "skewed bimodal"         
        # gen23(n)   "claw"                       
        # gen24(n)   "smooth comb"                   
        # gen25(n)   "caliper"                              
        # gen26(n)   "trimodal uniform"             
        # gen27(n)   "sawtooth"                     
        # gen28(n)   "bilogarithmic peak"                  
}

